From 3968f33b6542cf20cf63cf49bfbc033bd2486295 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 12 Jun 2011 20:56:57 -0700 Subject: gcc-4.6.0: Bring in patches from FSF 4.6 branch This brings in new patches from 4.6 release branch updates the comment section of existing branch to not contain patch numbers. Tested build on qemu for arm ppc mips x86 and x86_64 Signed-off-by: Khem Raj --- .../0258-PR-debug-48967.patch | 134 +++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0258-PR-debug-48967.patch (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0258-PR-debug-48967.patch') diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0258-PR-debug-48967.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0258-PR-debug-48967.patch new file mode 100644 index 000000000..c926a5971 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0258-PR-debug-48967.patch @@ -0,0 +1,134 @@ +From 5581111b5be72638aebb478c70c2bafc0abd04e2 Mon Sep 17 00:00:00 2001 +From: jakub +Date: Thu, 12 May 2011 11:59:32 +0000 +Subject: [PATCH] PR debug/48967 + * var-tracking.c (use_narrower_mode_test) : Return 1 + if validate_subreg fails. + + * g++.dg/opt/pr48967.C: New test. + + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173702 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 5e328ff..be253f4 100644 +new file mode 100644 +index 0000000..db2ea54 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/opt/pr48967.C +@@ -0,0 +1,98 @@ ++// PR debug/48967 ++// { dg-do compile } ++// { dg-options "-g -O2" } ++ ++template struct A; ++template struct A ++{ ++ typedef T ref; ++}; ++template struct B ++{ ++ typedef A t; ++ typedef typename t::ref ref; ++ ref operator * () { return ref (); } ++}; ++template struct I ++{ ++ typedef T *cp; ++ template struct J ++ { ++ typedef I other; ++ }; ++}; ++template struct S : public I ++{ ++}; ++template struct E ++{ ++ typedef typename _A::template J ::other at; ++}; ++template > struct D ++{ ++ typedef E _Base; ++ typedef typename _Base::at at; ++ typedef typename at::cp cp; ++ typedef B H; ++}; ++template struct F ++{ ++ T *operator -> () { return __null; } ++}; ++template long ++lfloor (T x) ++{ ++ return static_cast (x) - (x && x != static_cast (x)); ++} ++template long ++lround (T x) ++{ ++ return lfloor (x - 0.5) + 1; ++} ++class M; ++template class P; ++typedef P Q; ++template struct P ++{ ++ float x (); ++}; ++struct CV ++{ ++ Q c; ++}; ++struct C ++{ ++ void foo (const CV &) const; ++ class O; ++ typedef D > R; ++ R n; ++}; ++struct S3 ++{ ++ S3 (int, int); ++}; ++struct S2 ++{ ++ S3 sx, sy; ++ S2 (int x = 0, int y = 0, int s = 0, int t = 0) : sx (x, y), sy (s, t) {} ++}; ++template struct N ++{ ++ int bar (); ++}; ++struct C::O ++{ ++ N o; ++ void foo (CV r, int) ++ { ++ Q c = r.c; ++ float t = 0.5 * (o.bar ()); ++ S2 (lround (c.x ()), t); ++ } ++}; ++void ++C::foo (const CV &w) const ++{ ++ R::H m; ++ (*m)->foo (w, 8); ++} +diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c +index 548afbc..b7ba0b9 100644 +--- a/gcc/var-tracking.c ++++ b/gcc/var-tracking.c +@@ -739,6 +739,10 @@ use_narrower_mode_test (rtx *loc, void *data) + case REG: + if (cselib_lookup (*loc, GET_MODE (SUBREG_REG (subreg)), 0, VOIDmode)) + return 1; ++ if (!validate_subreg (GET_MODE (subreg), GET_MODE (*loc), ++ *loc, subreg_lowpart_offset (GET_MODE (subreg), ++ GET_MODE (*loc)))) ++ return 1; + return -1; + case PLUS: + case MINUS: +-- +1.7.0.4 + -- cgit v1.2.3