4.7.0-0.10

This commit is contained in:
Jakub Jelinek 2012-01-26 14:17:11 +01:00
parent c0579b832a
commit e3e70e5e70
7 changed files with 62 additions and 260 deletions

1
.gitignore vendored
View File

@ -15,3 +15,4 @@
/gcc-4.7.0-20120117.tar.bz2
/gcc-4.7.0-20120119.tar.bz2
/gcc-4.7.0-20120123.tar.bz2
/gcc-4.7.0-20120126.tar.bz2

View File

@ -1,9 +1,9 @@
%global DATE 20120123
%global SVNREV 183456
%global DATE 20120126
%global SVNREV 183558
%global gcc_version 4.7.0
# Note, gcc_release must be integer, if you want to add suffixes to
# %{release}, append them after %{gcc_release} on Release: line.
%global gcc_release 0.9
%global gcc_release 0.10
%global _unpackaged_files_terminate_build 0
%global multilib_64_archs sparc64 ppc64 s390x x86_64
%ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
@ -175,9 +175,8 @@ Patch13: gcc47-no-add-needed.patch
Patch14: gcc47-ppl-0.10.patch
Patch15: gcc47-libitm-fno-exceptions.patch
Patch16: gcc47-pr51895.patch
Patch17: gcc47-pr51957.patch
Patch18: gcc47-pr46590-revert.patch
Patch19: gcc47-pr51968.patch
Patch17: gcc47-pr46590-revert.patch
Patch18: gcc47-pr52006.patch
Patch1000: fastjar-0.97-segfault.patch
Patch1001: fastjar-0.97-len1.patch
@ -678,9 +677,8 @@ package or when debugging this package.
%endif
%patch15 -p0 -b .libitm-fno-exceptions~
%patch16 -p0 -b .pr51895~
%patch17 -p0 -b .pr51957~
%patch18 -p0 -b .pr46590-revert~
%patch19 -p0 -b .pr51968~
%patch17 -p0 -b .pr46590-revert~
%patch18 -p0 -b .pr52006~
%if 0%{?_enable_debug_packages}
cat > split-debuginfo.sh <<\EOF
@ -2641,6 +2639,16 @@ fi
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
%changelog
* Thu Jan 26 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.10
- update from trunk
- PRs bootstrap/51985, c++/51223, c++/51812, c++/51917, c++/51928,
c++/51930, c++/51973, c++/51992, driver/47249, fortran/51966,
fortran/51995, libstdc++/49829, lto/51698, middle-end/45678,
middle-end/51986, rtl-optimization/48308, rtl-optimization/48374
- fix data-ref handling of non-volatile inline asms (#784242,
PR tree-optimization/51987)
- fix ARM ICE with invalid peephole (#784748, PR target/52006)
* Mon Jan 23 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.9
- update from trunk
- PRs ada/46192, c++/51344, c++/51398, c++/51402, c++/51832, c++/51919,

View File

@ -1,23 +0,0 @@
2011-03-01 Jakub Jelinek <jakub@redhat.com>
PR debug/47858
* opts.c (default_options_table): Enable -fipa-sra by default
only for -O3, not for -O2 and -Os.
--- gcc/opts.c.jj 2011-02-20 08:36:59.888390890 +0100
+++ gcc/opts.c 2011-03-01 12:04:38.680558351 +0100
@@ -487,13 +487,13 @@ static const struct default_options defa
{ OPT_LEVELS_2_PLUS, OPT_ftree_switch_conversion, NULL, 1 },
{ OPT_LEVELS_2_PLUS, OPT_fipa_cp, NULL, 1 },
{ OPT_LEVELS_2_PLUS, OPT_fdevirtualize, NULL, 1 },
- { OPT_LEVELS_2_PLUS, OPT_fipa_sra, NULL, 1 },
{ OPT_LEVELS_2_PLUS, OPT_falign_loops, NULL, 1 },
{ OPT_LEVELS_2_PLUS, OPT_falign_jumps, NULL, 1 },
{ OPT_LEVELS_2_PLUS, OPT_falign_labels, NULL, 1 },
{ OPT_LEVELS_2_PLUS, OPT_falign_functions, NULL, 1 },
/* -O3 optimizations. */
+ { OPT_LEVELS_3_PLUS, OPT_fipa_sra, NULL, 1 },
{ OPT_LEVELS_3_PLUS, OPT_ftree_loop_distribute_patterns, NULL, 1 },
{ OPT_LEVELS_3_PLUS, OPT_fpredictive_commoning, NULL, 1 },
/* Inlining of functions reducing size is a good idea with -Os

View File

@ -1,206 +0,0 @@
2012-01-23 Jakub Jelinek <jakub@redhat.com>
PR target/51957
* target.def (const_not_ok_for_debug_p): New hook.
* doc/tm.texi.in (TARGET_CONST_NOT_OK_FOR_DEBUG_P): New hook
documentation.
* doc/tm.texi: Regenerated.
* dwarf2out.c (const_ok_for_output_1): If
targetm.const_not_ok_for_debug_p returns true, fail.
* config/rs6000/rs6000.c (rs6000_const_not_ok_for_debug_p): New
function.
(TARGET_CONST_NOT_OK_FOR_DEBUG_P): Redefine.
* gcc.dg/pr51957-1.c: New test.
* gcc.dg/pr51957-1.h: New file.
* gcc.dg/pr51957-2.c: New test.
--- gcc/target.def.jj 2012-01-20 12:35:16.000000000 +0100
+++ gcc/target.def 2012-01-23 13:14:52.601638343 +0100
@@ -1382,6 +1382,14 @@ DEFHOOK
rtx, (rtx x),
delegitimize_mem_from_attrs)
+/* Given an RTX, return true if it is not ok to emit it into debug info
+ section. */
+DEFHOOK
+(const_not_ok_for_debug_p,
+ "",
+ bool, (rtx x),
+ hook_bool_rtx_false)
+
/* Given an address RTX, say whether it is valid. */
DEFHOOK
(legitimate_address_p,
--- gcc/doc/tm.texi.in.jj 2012-01-20 12:35:10.000000000 +0100
+++ gcc/doc/tm.texi.in 2012-01-23 13:27:19.544241676 +0100
@@ -5567,6 +5567,11 @@ the semantics of these opaque @code{UNSP
into their original form.
@end deftypefn
+@hook TARGET_CONST_NOT_OK_FOR_DEBUG_P
+This hook should return true if @var{x} should not be emitted into
+debug sections.
+@end deftypefn
+
@hook TARGET_CANNOT_FORCE_CONST_MEM
This hook should return true if @var{x} is of a form that cannot (or
should not) be spilled to the constant pool. @var{mode} is the mode
--- gcc/doc/tm.texi.jj 2012-01-20 12:35:10.000000000 +0100
+++ gcc/doc/tm.texi 2012-01-23 13:27:33.000000000 +0100
@@ -5631,6 +5631,11 @@ the semantics of these opaque @code{UNSP
into their original form.
@end deftypefn
+@deftypefn {Target Hook} bool TARGET_CONST_NOT_OK_FOR_DEBUG_P (rtx @var{x})
+This hook should return true if @var{x} should not be emitted into
+debug sections.
+@end deftypefn
+
@deftypefn {Target Hook} bool TARGET_CANNOT_FORCE_CONST_MEM (enum machine_mode @var{mode}, rtx @var{x})
This hook should return true if @var{x} is of a form that cannot (or
should not) be spilled to the constant pool. @var{mode} is the mode
--- gcc/dwarf2out.c.jj 2012-01-22 16:02:10.000000000 +0100
+++ gcc/dwarf2out.c 2012-01-23 13:58:09.887380014 +0100
@@ -10683,6 +10683,13 @@ const_ok_for_output_1 (rtx *rtlp, void *
return 1;
}
+ if (targetm.const_not_ok_for_debug_p (rtl))
+ {
+ expansion_failed (NULL_TREE, rtl,
+ "Expression rejected for debug by the backend.\n");
+ return 1;
+ }
+
if (GET_CODE (rtl) != SYMBOL_REF)
return 0;
--- gcc/config/rs6000/rs6000.c.jj 2012-01-22 16:02:10.000000000 +0100
+++ gcc/config/rs6000/rs6000.c 2012-01-23 13:25:05.092031129 +0100
@@ -1106,6 +1106,7 @@ static rtx rs6000_debug_legitimize_addre
static rtx rs6000_legitimize_tls_address (rtx, enum tls_model);
static void rs6000_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
static rtx rs6000_delegitimize_address (rtx);
+static bool rs6000_const_not_ok_for_debug_p (rtx);
static rtx rs6000_tls_get_addr (void);
static rtx rs6000_got_sym (void);
static int rs6000_tls_symbol_ref_1 (rtx *, void *);
@@ -1405,6 +1406,9 @@ static const struct attribute_spec rs600
#undef TARGET_DELEGITIMIZE_ADDRESS
#define TARGET_DELEGITIMIZE_ADDRESS rs6000_delegitimize_address
+#undef TARGET_CONST_NOT_OK_FOR_DEBUG_P
+#define TARGET_CONST_NOT_OK_FOR_DEBUG_P rs6000_const_not_ok_for_debug_p
+
#undef TARGET_ASM_FUNCTION_PROLOGUE
#define TARGET_ASM_FUNCTION_PROLOGUE rs6000_output_function_prologue
#undef TARGET_ASM_FUNCTION_EPILOGUE
@@ -5815,6 +5819,25 @@ rs6000_delegitimize_address (rtx orig_x)
return orig_x;
}
+/* Return true if X shouldn't be emitted into the debug info.
+ The linker doesn't like .toc section references from
+ .debug_* sections, so reject .toc section symbols. */
+
+static bool
+rs6000_const_not_ok_for_debug_p (rtx x)
+{
+ if (GET_CODE (x) == SYMBOL_REF
+ && CONSTANT_POOL_ADDRESS_P (x))
+ {
+ rtx c = get_pool_constant (x);
+ enum machine_mode cmode = get_pool_mode (x);
+ if (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (c, cmode))
+ return true;
+ }
+
+ return false;
+}
+
/* Construct the SYMBOL_REF for the tls_get_addr function. */
static GTY(()) rtx rs6000_tls_symbol;
--- gcc/testsuite/gcc.dg/pr51957-1.c.jj 2012-01-23 14:06:45.024357678 +0100
+++ gcc/testsuite/gcc.dg/pr51957-1.c 2012-01-23 14:12:02.895492825 +0100
@@ -0,0 +1,29 @@
+/* PR target/51957 */
+/* { dg-do link } */
+/* { dg-options "-O2 -g -fprofile-use" } */
+/* { dg-additional-sources "pr51957-2.c" } */
+
+int v[128];
+#include "pr51957-1.h"
+
+void
+foo (U *x)
+{
+ T *a = x->u;
+ while (1)
+ {
+ union R *b;
+ b = fn1 ();
+ if (b != w[0] && !(v[b->p->c] == 1))
+ {
+ fn2 (a->t, "foobar", b->p);
+ b = w[0];
+ }
+ if (b != w[0])
+ fn3 ();
+ if (w[0] && b != w[0])
+ fn4 (b->p);
+ if (b != w[0] && (v[b->p->c] == 1) && fn4 (b->p))
+ break;
+ }
+}
--- gcc/testsuite/gcc.dg/pr51957-1.h.jj 2012-01-23 14:06:56.491290757 +0100
+++ gcc/testsuite/gcc.dg/pr51957-1.h 2012-01-23 14:07:35.243060438 +0100
@@ -0,0 +1,9 @@
+union R { int c; union R *p; };
+extern union R *w[];
+typedef struct { int t; } T;
+typedef struct { void *u; } U;
+union R *fn1 (void);
+void fn2 (int, const char *, union R *);
+void fn3 (void);
+int fn4 (union R *);
+void foo (U *x);
--- gcc/testsuite/gcc.dg/pr51957-2.c.jj 2012-01-23 14:10:59.840862700 +0100
+++ gcc/testsuite/gcc.dg/pr51957-2.c 2012-01-23 14:10:52.870904033 +0100
@@ -0,0 +1,35 @@
+/* PR target/51957 */
+/* { dg-do compile } */
+/* { dg-options "-O0" } */
+
+#include "pr51957-1.h"
+
+union R *w[10];
+
+union R *
+fn1 (void)
+{
+ return (union R *) 0;
+}
+
+void
+fn2 (int x, const char *y, union R *z)
+{
+}
+
+void
+fn3 (void)
+{
+}
+
+int
+fn4 (union R *x)
+{
+ return 0;
+}
+
+int
+main ()
+{
+ return 0;
+}

View File

@ -1,21 +0,0 @@
2012-01-23 Richard Henderson <rth@redhat.com>
PR target/51968
* config/arm/arm.c (neon_split_vcombine): Split into
NOTE_INSN_DELETED instead of nothing.
--- gcc/config/arm/arm.c
+++ gcc/config/arm/arm.c
@@ -20928,7 +20928,11 @@ neon_split_vcombine (rtx operands[3])
rtx destlo, desthi;
if (src1 == dest && src2 == dest + halfregs)
- return;
+ {
+ /* No-op move. Can't split to nothing; emit something. */
+ emit_note (NOTE_INSN_DELETED);
+ return;
+ }
/* Preserve register attributes for variable tracking. */
destlo = gen_rtx_REG_offset (operands[0], halfmode, dest, 0);

43
gcc47-pr52006.patch Normal file
View File

@ -0,0 +1,43 @@
2012-01-26 Jakub Jelinek <jakub@redhat.com>
PR target/52006
* config/arm/arm.md (pic_add_dot_plus_eight peephole2): Use
arm_general_register_operand predicate for operand 2 instead of
register_operand.
* gcc.target/arm/pr52006.c: New test.
--- gcc/config/arm/arm.md.jj 2012-01-20 12:35:15.000000000 +0100
+++ gcc/config/arm/arm.md 2012-01-26 10:24:13.082570508 +0100
@@ -5719,7 +5719,8 @@ (define_peephole2
(const_int 8)
(match_operand 1 "" "")]
UNSPEC_PIC_BASE))
- (set (match_operand:SI 2 "register_operand" "") (mem:SI (match_dup 0)))]
+ (set (match_operand:SI 2 "arm_general_register_operand" "")
+ (mem:SI (match_dup 0)))]
"TARGET_ARM && peep2_reg_dead_p (2, operands[0])"
[(set (match_dup 2)
(mem:SI (unspec:SI [(match_dup 3)
--- gcc/testsuite/gcc.target/arm/pr52006.c.jj 2012-01-26 10:32:27.989658669 +0100
+++ gcc/testsuite/gcc.target/arm/pr52006.c 2012-01-26 10:32:34.626620068 +0100
@@ -0,0 +1,19 @@
+/* PR target/52006 */
+/* { dg-do compile } */
+/* { dg-options "-march=armv7-a -mfloat-abi=hard -O2 -fPIC" } */
+
+unsigned long a;
+static int b;
+
+void
+foo (void)
+{
+ asm volatile ("" : "=r" (b));
+}
+
+void
+bar (float f)
+{
+ if (f < b / 100.0)
+ a = 1;
+}

View File

@ -1,2 +1,2 @@
2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz
c616ff4d911b6888dedf1d49df177e73 gcc-4.7.0-20120123.tar.bz2
d96c83882dc395b8465feb9f86ba999d gcc-4.7.0-20120126.tar.bz2