4.7.0-0.10
This commit is contained in:
parent
c0579b832a
commit
e3e70e5e70
1
.gitignore
vendored
1
.gitignore
vendored
@ -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
|
||||
|
26
gcc.spec
26
gcc.spec
@ -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,
|
||||
|
@ -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
|
@ -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;
|
||||
+}
|
@ -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
43
gcc47-pr52006.patch
Normal 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;
|
||||
+}
|
Loading…
Reference in New Issue
Block a user