4.4.2-5
This commit is contained in:
parent
a50cd738d0
commit
51454468e8
|
@ -1,2 +1,2 @@
|
|||
fastjar-0.97.tar.gz
|
||||
gcc-4.4.2-20091018.tar.bz2
|
||||
gcc-4.4.2-20091019.tar.bz2
|
||||
|
|
30
gcc.spec
30
gcc.spec
|
@ -1,9 +1,9 @@
|
|||
%global DATE 20091018
|
||||
%global SVNREV 152967
|
||||
%global DATE 20091019
|
||||
%global SVNREV 152998
|
||||
%global gcc_version 4.4.2
|
||||
# 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 4
|
||||
%global gcc_release 5
|
||||
%global _unpackaged_files_terminate_build 0
|
||||
%global multilib_64_archs sparc64 ppc64 s390x x86_64
|
||||
%global include_gappletviewer 1
|
||||
|
@ -157,15 +157,13 @@ Patch11: gcc44-sparc-config-detection.patch
|
|||
Patch12: gcc44-libgomp-omp_h-multilib.patch
|
||||
Patch13: gcc44-libtool-no-rpath.patch
|
||||
Patch14: gcc44-cloog-dl.patch
|
||||
Patch15: gcc44-raw-string.patch
|
||||
Patch16: gcc44-unwind-debug-hook.patch
|
||||
Patch17: gcc44-pr38757.patch
|
||||
Patch18: gcc44-libstdc++-docs.patch
|
||||
Patch19: gcc44-ppc64-aixdesc.patch
|
||||
Patch20: gcc44-pr40521.patch
|
||||
Patch21: gcc44-unwind-leltgegt.patch
|
||||
Patch22: gcc44-pr40521-2.patch
|
||||
Patch23: gcc44-rh529512.patch
|
||||
Patch20: gcc44-ppc-const-builtins.patch
|
||||
Patch21: gcc44-vta-dce-debug-stmt-no-change.patch
|
||||
Patch22: gcc44-vta-sched-deps-debug-spec.patch
|
||||
|
||||
Patch1000: fastjar-0.97-segfault.patch
|
||||
|
||||
|
@ -465,17 +463,15 @@ which are required to compile with the GNAT.
|
|||
%if %{build_cloog}
|
||||
%patch14 -p0 -b .cloog-dl~
|
||||
%endif
|
||||
%patch15 -p0 -b .raw-string~
|
||||
%patch16 -p0 -b .unwind-debug-hook~
|
||||
%patch17 -p0 -b .pr38757~
|
||||
%if %{build_libstdcxx_docs}
|
||||
%patch18 -p0 -b .libstdc++-docs~
|
||||
%endif
|
||||
%patch19 -p0 -b .ppc64-aixdesc~
|
||||
%patch20 -p0 -b .pr40521~
|
||||
%patch21 -p0 -b .unwind-leltgegt~
|
||||
%patch22 -p0 -b .pr40521-2~
|
||||
%patch23 -p0 -b .rh529512~
|
||||
%patch20 -p0 -b .ppc-const-builtins~
|
||||
%patch21 -p0 -b .vta-dce-debug-stmt-no-change~
|
||||
%patch22 -p0 -b .vta-sched-deps-debug-spec~
|
||||
|
||||
# This testcase doesn't compile.
|
||||
rm libjava/testsuite/libjava.lang/PR35020*
|
||||
|
@ -1857,6 +1853,14 @@ fi
|
|||
%doc rpm.doc/changelogs/libmudflap/ChangeLog*
|
||||
|
||||
%changelog
|
||||
* Mon Oct 19 2009 Jakub Jelinek <jakub@redhat.com> 4.4.2-5
|
||||
- update from gcc-4_4-branch
|
||||
- PR fortran/41755
|
||||
- s390 z10 tuning fixes
|
||||
- provide accurate attributes for powerpc builtins (PR target/23983)
|
||||
- fix -fcompare-debug differences caused by DCE removal of debug stmts
|
||||
- fix updating of speculation status with VTA (PR debug/41739)
|
||||
|
||||
* Sun Oct 18 2009 Jakub Jelinek <jakub@redhat.com> 4.4.2-4
|
||||
- update from gcc-4_4-branch
|
||||
- PRs c++/37204, c++/37766, c++/37875, c++/38798, c++/40092,
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
2009-10-19 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* config/rs6000/rs6000.c (def_builtin): Set TREE_READONLY instead
|
||||
of TREE_CONSTANT.
|
||||
|
||||
--- gcc/config/rs6000/rs6000.c 2009-10-15 23:23:25.000000000 +0200
|
||||
+++ gcc/config/rs6000/rs6000.c 2009-10-19 23:51:26.000000000 +0200
|
||||
@@ -8530,7 +8530,7 @@ def_builtin (int mask, const char *name,
|
||||
|
||||
/* const function, function only depends on the inputs. */
|
||||
case RS6000_BTC_CONST:
|
||||
- TREE_CONSTANT (t) = 1;
|
||||
+ TREE_READONLY (t) = 1;
|
||||
TREE_NOTHROW (t) = 1;
|
||||
break;
|
||||
|
||||
@@ -8554,7 +8554,7 @@ def_builtin (int mask, const char *name,
|
||||
DECL_IS_NOVOPS (t) = 1;
|
||||
}
|
||||
else
|
||||
- TREE_CONSTANT (t) = 1;
|
||||
+ TREE_READONLY (t) = 1;
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -1,143 +0,0 @@
|
|||
2009-10-16 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/40521
|
||||
* debug.h (struct gcc_debug_hooks): Add assembly_start hook.
|
||||
* cgraphunit.c (cgraph_optimize): Call it.
|
||||
* dwarf2out.c (dwarf2out_init): Move .cfi_sections printing into...
|
||||
(dwarf2out_assembly_start): ... here. New hook.
|
||||
(dwarf2out_debug_hooks): Add dwarf2out_assembly_start.
|
||||
* debug.c (do_nothing_debug_hooks): Do nothing for assembly_start
|
||||
hook.
|
||||
* dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
|
||||
* sdbout.c (sdb_debug_hooks): Likewise.
|
||||
* vmsdbgout.c (vmsdbg_debug_hooks): Add vmsdbgout_assembly_start.
|
||||
(vmsdbgout_assembly_start): New hook.
|
||||
|
||||
--- gcc/debug.h.jj 2009-10-13 16:20:12.000000000 +0200
|
||||
+++ gcc/debug.h 2009-10-16 17:48:10.000000000 +0200
|
||||
@@ -31,6 +31,10 @@ struct gcc_debug_hooks
|
||||
/* Output debug symbols. */
|
||||
void (* finish) (const char *main_filename);
|
||||
|
||||
+ /* Called from cgraph_optimize before starting to assemble
|
||||
+ functions/variables/toplevel asms. */
|
||||
+ void (* assembly_start) (void);
|
||||
+
|
||||
/* Macro defined on line LINE with name and expansion TEXT. */
|
||||
void (* define) (unsigned int line, const char *text);
|
||||
|
||||
--- gcc/cgraphunit.c.jj 2009-10-13 16:20:12.000000000 +0200
|
||||
+++ gcc/cgraphunit.c 2009-10-16 17:57:06.000000000 +0200
|
||||
@@ -1441,6 +1441,7 @@ cgraph_optimize (void)
|
||||
timevar_pop (TV_CGRAPHOPT);
|
||||
|
||||
/* Output everything. */
|
||||
+ (*debug_hooks->assembly_start) ();
|
||||
if (!quiet_flag)
|
||||
fprintf (stderr, "Assembling functions:\n");
|
||||
#ifdef ENABLE_CHECKING
|
||||
--- gcc/dwarf2out.c.jj 2009-10-16 01:51:02.000000000 +0200
|
||||
+++ gcc/dwarf2out.c 2009-10-16 18:00:31.000000000 +0200
|
||||
@@ -5401,6 +5401,7 @@ static int output_indirect_string (void
|
||||
|
||||
static void dwarf2out_init (const char *);
|
||||
static void dwarf2out_finish (const char *);
|
||||
+static void dwarf2out_assembly_start (void);
|
||||
static void dwarf2out_define (unsigned int, const char *);
|
||||
static void dwarf2out_undef (unsigned int, const char *);
|
||||
static void dwarf2out_start_source_file (unsigned, const char *);
|
||||
@@ -5427,6 +5428,7 @@ const struct gcc_debug_hooks dwarf2_debu
|
||||
{
|
||||
dwarf2out_init,
|
||||
dwarf2out_finish,
|
||||
+ dwarf2out_assembly_start,
|
||||
dwarf2out_define,
|
||||
dwarf2out_undef,
|
||||
dwarf2out_start_source_file,
|
||||
@@ -20392,6 +20394,14 @@ dwarf2out_init (const char *filename ATT
|
||||
ASM_OUTPUT_LABEL (asm_out_file, cold_text_section_label);
|
||||
}
|
||||
|
||||
+}
|
||||
+
|
||||
+/* Called before cgraph_optimize starts outputtting functions, variables
|
||||
+ and toplevel asms into assembly. */
|
||||
+
|
||||
+static void
|
||||
+dwarf2out_assembly_start (void)
|
||||
+{
|
||||
if (HAVE_GAS_CFI_SECTIONS_DIRECTIVE && dwarf2out_do_cfi_asm ())
|
||||
{
|
||||
#ifndef TARGET_UNWIND_INFO
|
||||
--- gcc/debug.c.jj 2009-10-13 16:20:12.000000000 +0200
|
||||
+++ gcc/debug.c 2009-10-16 17:49:02.000000000 +0200
|
||||
@@ -27,6 +27,7 @@ const struct gcc_debug_hooks do_nothing_
|
||||
{
|
||||
debug_nothing_charstar,
|
||||
debug_nothing_charstar,
|
||||
+ debug_nothing_void,
|
||||
debug_nothing_int_charstar,
|
||||
debug_nothing_int_charstar,
|
||||
debug_nothing_int_charstar,
|
||||
--- gcc/dbxout.c.jj 2009-10-13 16:20:12.000000000 +0200
|
||||
+++ gcc/dbxout.c 2009-10-16 17:50:58.000000000 +0200
|
||||
@@ -346,6 +346,7 @@ const struct gcc_debug_hooks dbx_debug_h
|
||||
{
|
||||
dbxout_init,
|
||||
dbxout_finish,
|
||||
+ debug_nothing_void,
|
||||
debug_nothing_int_charstar,
|
||||
debug_nothing_int_charstar,
|
||||
dbxout_start_source_file,
|
||||
@@ -386,6 +387,7 @@ const struct gcc_debug_hooks xcoff_debug
|
||||
{
|
||||
dbxout_init,
|
||||
dbxout_finish,
|
||||
+ debug_nothing_void,
|
||||
debug_nothing_int_charstar,
|
||||
debug_nothing_int_charstar,
|
||||
dbxout_start_source_file,
|
||||
--- gcc/sdbout.c.jj 2009-10-13 16:20:12.000000000 +0200
|
||||
+++ gcc/sdbout.c 2009-10-16 17:53:15.000000000 +0200
|
||||
@@ -307,6 +307,7 @@ const struct gcc_debug_hooks sdb_debug_h
|
||||
{
|
||||
sdbout_init, /* init */
|
||||
sdbout_finish, /* finish */
|
||||
+ debug_nothing_void, /* assembly_start */
|
||||
debug_nothing_int_charstar, /* define */
|
||||
debug_nothing_int_charstar, /* undef */
|
||||
sdbout_start_source_file, /* start_source_file */
|
||||
--- gcc/vmsdbgout.c.jj 2009-10-13 16:20:11.000000000 +0200
|
||||
+++ gcc/vmsdbgout.c 2009-10-16 18:01:46.000000000 +0200
|
||||
@@ -168,6 +168,7 @@ static int write_srccorrs (int);
|
||||
|
||||
static void vmsdbgout_init (const char *);
|
||||
static void vmsdbgout_finish (const char *);
|
||||
+static void vmsdbgout_assembly_start (void);
|
||||
static void vmsdbgout_define (unsigned int, const char *);
|
||||
static void vmsdbgout_undef (unsigned int, const char *);
|
||||
static void vmsdbgout_start_source_file (unsigned int, const char *);
|
||||
@@ -190,6 +191,7 @@ static void vmsdbgout_abstract_function
|
||||
const struct gcc_debug_hooks vmsdbg_debug_hooks
|
||||
= {vmsdbgout_init,
|
||||
vmsdbgout_finish,
|
||||
+ vmsdbgout_assembly_start,
|
||||
vmsdbgout_define,
|
||||
vmsdbgout_undef,
|
||||
vmsdbgout_start_source_file,
|
||||
@@ -1618,6 +1620,15 @@ vmsdbgout_init (const char *main_input_f
|
||||
/* Not implemented in VMS Debug. */
|
||||
|
||||
static void
|
||||
+vmsdbgout_assembly_start (void)
|
||||
+{
|
||||
+ if (write_symbols == VMS_AND_DWARF2_DEBUG)
|
||||
+ (*dwarf2_debug_hooks.assembly_start) ();
|
||||
+}
|
||||
+
|
||||
+/* Not implemented in VMS Debug. */
|
||||
+
|
||||
+static void
|
||||
vmsdbgout_define (unsigned int lineno, const char *buffer)
|
||||
{
|
||||
if (write_symbols == VMS_AND_DWARF2_DEBUG)
|
|
@ -1,139 +0,0 @@
|
|||
2009-10-13 Mikael Pettersson <mikpe@it.uu.se>
|
||||
|
||||
Backport from mainline:
|
||||
2009-10-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/40521
|
||||
* configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
|
||||
* configure: Regenerated.
|
||||
* config.in: Regenerated.
|
||||
* dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
|
||||
!HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
|
||||
(dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
|
||||
not emitting .eh_frame, emit .cfi_sections .debug_frame
|
||||
directive.
|
||||
|
||||
2009-10-09 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR debug/40521
|
||||
* dwarf2out.c (dwarf2out_init): Test whether
|
||||
HAVE_GAS_CFI_SECTIONS_DIRECTIVE is non-zero instead of checking
|
||||
it is defined.
|
||||
|
||||
--- gcc/configure.ac 2009-03-24 18:46:03.000000000 +0100
|
||||
+++ gcc/configure.ac 2009-10-13 12:00:31.000000000 +0200
|
||||
@@ -2297,6 +2297,17 @@ AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_PERSONAL
|
||||
then echo 1; else echo 0; fi`],
|
||||
[Define 0/1 if your assembler supports .cfi_personality.])
|
||||
|
||||
+gcc_GAS_CHECK_FEATURE([cfi sections directive],
|
||||
+ gcc_cv_as_cfi_sections_directive, ,,
|
||||
+[ .text
|
||||
+ .cfi_sections .debug_frame, .eh_frame
|
||||
+ .cfi_startproc
|
||||
+ .cfi_endproc])
|
||||
+AC_DEFINE_UNQUOTED(HAVE_GAS_CFI_SECTIONS_DIRECTIVE,
|
||||
+ [`if test $gcc_cv_as_cfi_sections_directive = yes;
|
||||
+ then echo 1; else echo 0; fi`],
|
||||
+ [Define 0/1 if your assembler supports .cfi_sections.])
|
||||
+
|
||||
# GAS versions up to and including 2.11.0 may mis-optimize
|
||||
# .eh_frame data.
|
||||
gcc_GAS_CHECK_FEATURE(eh_frame optimization, gcc_cv_as_eh_frame,
|
||||
--- gcc/config.in 2009-07-22 09:43:59.000000000 +0200
|
||||
+++ gcc/config.in 2009-10-13 12:00:31.000000000 +0200
|
||||
@@ -839,6 +839,12 @@
|
||||
#endif
|
||||
|
||||
|
||||
+/* Define 0/1 if your assembler supports .cfi_sections. */
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef HAVE_GAS_CFI_SECTIONS_DIRECTIVE
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
/* Define if your assembler uses the new HImode fild and fist notation. */
|
||||
#ifndef USED_FOR_TARGET
|
||||
#undef HAVE_GAS_FILDS_FISTS
|
||||
--- gcc/configure 2009-03-24 18:46:03.000000000 +0100
|
||||
+++ gcc/configure 2009-10-13 12:00:31.000000000 +0200
|
||||
@@ -21680,6 +21680,42 @@ cat >>confdefs.h <<_ACEOF
|
||||
_ACEOF
|
||||
|
||||
|
||||
+echo "$as_me:$LINENO: checking assembler for cfi sections directive" >&5
|
||||
+echo $ECHO_N "checking assembler for cfi sections directive... $ECHO_C" >&6
|
||||
+if test "${gcc_cv_as_cfi_sections_directive+set}" = set; then
|
||||
+ echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
+else
|
||||
+ gcc_cv_as_cfi_sections_directive=no
|
||||
+ if test x$gcc_cv_as != x; then
|
||||
+ echo ' .text
|
||||
+ .cfi_sections .debug_frame, .eh_frame
|
||||
+ .cfi_startproc
|
||||
+ .cfi_endproc' > conftest.s
|
||||
+ if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'
|
||||
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
+ (eval $ac_try) 2>&5
|
||||
+ ac_status=$?
|
||||
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
+ (exit $ac_status); }; }
|
||||
+ then
|
||||
+ gcc_cv_as_cfi_sections_directive=yes
|
||||
+ else
|
||||
+ echo "configure: failed program was" >&5
|
||||
+ cat conftest.s >&5
|
||||
+ fi
|
||||
+ rm -f conftest.o conftest.s
|
||||
+ fi
|
||||
+fi
|
||||
+echo "$as_me:$LINENO: result: $gcc_cv_as_cfi_sections_directive" >&5
|
||||
+echo "${ECHO_T}$gcc_cv_as_cfi_sections_directive" >&6
|
||||
+
|
||||
+
|
||||
+cat >>confdefs.h <<_ACEOF
|
||||
+#define HAVE_GAS_CFI_SECTIONS_DIRECTIVE `if test $gcc_cv_as_cfi_sections_directive = yes;
|
||||
+ then echo 1; else echo 0; fi`
|
||||
+_ACEOF
|
||||
+
|
||||
+
|
||||
# GAS versions up to and including 2.11.0 may mis-optimize
|
||||
# .eh_frame data.
|
||||
echo "$as_me:$LINENO: checking assembler for eh_frame optimization" >&5
|
||||
--- gcc/dwarf2out.c 2009-06-03 19:32:45.000000000 +0200
|
||||
+++ gcc/dwarf2out.c 2009-10-13 12:00:39.000000000 +0200
|
||||
@@ -145,7 +145,18 @@ dwarf2out_do_cfi_asm (void)
|
||||
#endif
|
||||
if (!flag_dwarf2_cfi_asm || !dwarf2out_do_frame ())
|
||||
return false;
|
||||
- if (saved_do_cfi_asm || !eh_personality_libfunc)
|
||||
+ if (saved_do_cfi_asm)
|
||||
+ return true;
|
||||
+ if (!HAVE_GAS_CFI_SECTIONS_DIRECTIVE)
|
||||
+ {
|
||||
+#ifdef TARGET_UNWIND_INFO
|
||||
+ return false;
|
||||
+#else
|
||||
+ if (USING_SJLJ_EXCEPTIONS || (!flag_unwind_tables && !flag_exceptions))
|
||||
+ return false;
|
||||
+#endif
|
||||
+ }
|
||||
+ if (!eh_personality_libfunc)
|
||||
return true;
|
||||
if (!HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
|
||||
return false;
|
||||
@@ -16133,6 +16144,14 @@ dwarf2out_init (const char *filename ATT
|
||||
switch_to_section (cold_text_section);
|
||||
ASM_OUTPUT_LABEL (asm_out_file, cold_text_section_label);
|
||||
}
|
||||
+
|
||||
+ if (HAVE_GAS_CFI_SECTIONS_DIRECTIVE && dwarf2out_do_cfi_asm ())
|
||||
+ {
|
||||
+#ifndef TARGET_UNWIND_INFO
|
||||
+ if (USING_SJLJ_EXCEPTIONS || (!flag_unwind_tables && !flag_exceptions))
|
||||
+#endif
|
||||
+ fprintf (asm_out_file, "\t.cfi_sections\t.debug_frame\n");
|
||||
+ }
|
||||
}
|
||||
|
||||
/* A helper function for dwarf2out_finish called through
|
File diff suppressed because it is too large
Load Diff
|
@ -1,39 +0,0 @@
|
|||
2009-10-18 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* cfgexpand.c (expand_debug_expr): Fail if bitpos < 0 for non-MEM
|
||||
op0.
|
||||
|
||||
* gcc.dg/debug/vta-3.c: New test.
|
||||
|
||||
--- gcc/cfgexpand.c.jj 2009-10-16 01:45:11.000000000 +0200
|
||||
+++ gcc/cfgexpand.c 2009-10-18 14:02:25.000000000 +0200
|
||||
@@ -2593,6 +2593,9 @@ expand_debug_expr (tree exp)
|
||||
if (bitpos == 0 && mode == GET_MODE (op0))
|
||||
return op0;
|
||||
|
||||
+ if (bitpos < 0)
|
||||
+ return NULL;
|
||||
+
|
||||
if ((bitpos % BITS_PER_UNIT) == 0
|
||||
&& bitsize == GET_MODE_BITSIZE (mode1))
|
||||
{
|
||||
--- gcc/testsuite/gcc.dg/debug/vta-3.c.jj 2009-10-18 14:44:12.000000000 +0200
|
||||
+++ gcc/testsuite/gcc.dg/debug/vta-3.c 2009-10-18 14:44:32.000000000 +0200
|
||||
@@ -0,0 +1,17 @@
|
||||
+/* { dg-do compile } */
|
||||
+
|
||||
+int
|
||||
+foo (void)
|
||||
+{
|
||||
+ union { char e[8]; int i; } a, b;
|
||||
+ char *c, *d;
|
||||
+ unsigned int i;
|
||||
+ c = a.e;
|
||||
+ d = &b.e[sizeof (int) - 1];
|
||||
+ for (i = 0; i < sizeof (int); i++)
|
||||
+ {
|
||||
+ *d = *c++;
|
||||
+ --d;
|
||||
+ }
|
||||
+ return b.i;
|
||||
+}
|
|
@ -1,360 +0,0 @@
|
|||
2009-10-13 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* unwind-dw2.c (execute_stack_op): Fix operand order for
|
||||
DW_OP_le, DW_OP_ge, DW_OP_lt and DW_OP_gt.
|
||||
|
||||
* gcc.dg/cleanup-13.c: New test.
|
||||
|
||||
--- gcc/unwind-dw2.c.jj 2009-09-08 15:16:11.000000000 +0200
|
||||
+++ gcc/unwind-dw2.c 2009-10-13 19:13:31.000000000 +0200
|
||||
@@ -789,22 +789,22 @@ execute_stack_op (const unsigned char *o
|
||||
result = second ^ first;
|
||||
break;
|
||||
case DW_OP_le:
|
||||
- result = (_Unwind_Sword) first <= (_Unwind_Sword) second;
|
||||
+ result = (_Unwind_Sword) second <= (_Unwind_Sword) first;
|
||||
break;
|
||||
case DW_OP_ge:
|
||||
- result = (_Unwind_Sword) first >= (_Unwind_Sword) second;
|
||||
+ result = (_Unwind_Sword) second >= (_Unwind_Sword) first;
|
||||
break;
|
||||
case DW_OP_eq:
|
||||
- result = (_Unwind_Sword) first == (_Unwind_Sword) second;
|
||||
+ result = (_Unwind_Sword) second == (_Unwind_Sword) first;
|
||||
break;
|
||||
case DW_OP_lt:
|
||||
- result = (_Unwind_Sword) first < (_Unwind_Sword) second;
|
||||
+ result = (_Unwind_Sword) second < (_Unwind_Sword) first;
|
||||
break;
|
||||
case DW_OP_gt:
|
||||
- result = (_Unwind_Sword) first > (_Unwind_Sword) second;
|
||||
+ result = (_Unwind_Sword) second > (_Unwind_Sword) first;
|
||||
break;
|
||||
case DW_OP_ne:
|
||||
- result = (_Unwind_Sword) first != (_Unwind_Sword) second;
|
||||
+ result = (_Unwind_Sword) second != (_Unwind_Sword) first;
|
||||
break;
|
||||
|
||||
default:
|
||||
--- gcc/testsuite/gcc.dg/cleanup-13.c.jj 2009-10-13 16:46:54.000000000 +0200
|
||||
+++ gcc/testsuite/gcc.dg/cleanup-13.c 2009-10-13 19:20:07.000000000 +0200
|
||||
@@ -0,0 +1,319 @@
|
||||
+/* HP-UX libunwind.so doesn't provide _UA_END_OF_STACK */
|
||||
+/* { dg-do run } */
|
||||
+/* { dg-options "-fexceptions" } */
|
||||
+/* { dg-skip-if "" { "ia64-*-hpux11.*" } { "*" } { "" } } */
|
||||
+/* Verify DW_OP_* handling in the unwinder. */
|
||||
+
|
||||
+#include <unwind.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+
|
||||
+/* #define OP_addr(x) 0x06, ... */
|
||||
+#define OP_deref 0x06,
|
||||
+#define SLEB128(x) (x)&0x7f /* Assume here the value is -0x40 ... 0x3f. */
|
||||
+#define ULEB128(x) (x)&0x7f /* Assume here the value is 0 ... 0x7f. */
|
||||
+#define VAL1(x) (x)&0xff
|
||||
+#if defined (__BIG_ENDIAN__)
|
||||
+#define VAL2(x) ((x)>>8)&0xff,(x)&0xff
|
||||
+#define VAL4(x) ((x)>>24)&0xff,((x)>>16)&0xff,((x)>>8)&0xff,(x)&0xff
|
||||
+#define VAL8(x) ((x)>>56)&0xff,((x)>>48)&0xff,((x)>>40)&0xff,((x)>>32)&0xff,((x)>>24)&0xff,((x)>>16)&0xff,((x)>>8)&0xff,(x)&0xff
|
||||
+#elif defined(__LITTLE_ENDIAN__) || defined(__x86_64__) || defined(__i386__)
|
||||
+#define VAL2(x) (x)&0xff,((x)>>8)&0xff
|
||||
+#define VAL4(x) (x)&0xff,((x)>>8)&0xff,((x)>>16)&0xff,((x)>>24)&0xff
|
||||
+#define VAL8(x) (x)&0xff,((x)>>8)&0xff,((x)>>16)&0xff,((x)>>24)&0xff,((x)>>32)&0xff,((x)>>40)&0xff,((x)>>48)&0xff,((x)>>56)&0xff
|
||||
+#endif
|
||||
+#define OP_const1u(x) 0x08,VAL1(x),
|
||||
+#define OP_const1s(x) 0x09,VAL1(x),
|
||||
+#define OP_const2u(x) 0x0a,VAL2(x),
|
||||
+#define OP_const2s(x) 0x0b,VAL2(x),
|
||||
+#define OP_const4u(x) 0x0c,VAL4(x),
|
||||
+#define OP_const4s(x) 0x0d,VAL4(x),
|
||||
+#define OP_const8u(x) 0x0e,VAL8(x),
|
||||
+#define OP_const8s(x) 0x0f,VAL8(x),
|
||||
+#define OP_constu(x) 0x10,ULEB128(x),
|
||||
+#define OP_consts(x) 0x11,SLEB128(x),
|
||||
+#define OP_dup 0x12,
|
||||
+#define OP_drop 0x13,
|
||||
+#define OP_over 0x14,
|
||||
+#define OP_pick(x) 0x15,VAL1(x),
|
||||
+#define OP_swap 0x16,
|
||||
+#define OP_rot 0x17,
|
||||
+#define OP_xderef 0x18,
|
||||
+#define OP_abs 0x19,
|
||||
+#define OP_and 0x1a,
|
||||
+#define OP_div 0x1b,
|
||||
+#define OP_minus 0x1c,
|
||||
+#define OP_mod 0x1d,
|
||||
+#define OP_mul 0x1e,
|
||||
+#define OP_neg 0x1f,
|
||||
+#define OP_not 0x20,
|
||||
+#define OP_or 0x21,
|
||||
+#define OP_plus 0x22,
|
||||
+#define OP_plus_uconst(x) 0x23,ULEB128(x),
|
||||
+#define OP_shl 0x24,
|
||||
+#define OP_shr 0x25,
|
||||
+#define OP_shra 0x26,
|
||||
+#define OP_xor 0x27,
|
||||
+#define OP_bra(x) 0x28,VAL2(x),
|
||||
+#define OP_eq 0x29,
|
||||
+#define OP_ge 0x2a,
|
||||
+#define OP_gt 0x2b,
|
||||
+#define OP_le 0x2c,
|
||||
+#define OP_lt 0x2d,
|
||||
+#define OP_ne 0x2e,
|
||||
+#define OP_skip(x) 0x2f,VAL2(x),
|
||||
+#define OP_lit0 0x30,
|
||||
+#define OP_lit1 0x31,
|
||||
+#define OP_lit2 0x32,
|
||||
+#define OP_lit3 0x33,
|
||||
+#define OP_lit4 0x34,
|
||||
+#define OP_lit5 0x35,
|
||||
+#define OP_lit6 0x36,
|
||||
+#define OP_lit7 0x37,
|
||||
+#define OP_lit8 0x38,
|
||||
+#define OP_lit9 0x39,
|
||||
+#define OP_lit10 0x3a,
|
||||
+#define OP_lit11 0x3b,
|
||||
+#define OP_lit12 0x3c,
|
||||
+#define OP_lit13 0x3d,
|
||||
+#define OP_lit14 0x3e,
|
||||
+#define OP_lit15 0x3f,
|
||||
+#define OP_lit16 0x40,
|
||||
+#define OP_lit17 0x41,
|
||||
+#define OP_lit18 0x42,
|
||||
+#define OP_lit19 0x43,
|
||||
+#define OP_lit20 0x44,
|
||||
+#define OP_lit21 0x45,
|
||||
+#define OP_lit22 0x46,
|
||||
+#define OP_lit23 0x47,
|
||||
+#define OP_lit24 0x48,
|
||||
+#define OP_lit25 0x49,
|
||||
+#define OP_lit26 0x4a,
|
||||
+#define OP_lit27 0x4b,
|
||||
+#define OP_lit28 0x4c,
|
||||
+#define OP_lit29 0x4d,
|
||||
+#define OP_lit30 0x4e,
|
||||
+#define OP_lit31 0x4f,
|
||||
+#define OP_reg0 0x50,
|
||||
+#define OP_reg1 0x51,
|
||||
+#define OP_reg2 0x52,
|
||||
+#define OP_reg3 0x53,
|
||||
+#define OP_reg4 0x54,
|
||||
+#define OP_reg5 0x55,
|
||||
+#define OP_reg6 0x56,
|
||||
+#define OP_reg7 0x57,
|
||||
+#define OP_reg8 0x58,
|
||||
+#define OP_reg9 0x59,
|
||||
+#define OP_reg10 0x5a,
|
||||
+#define OP_reg11 0x5b,
|
||||
+#define OP_reg12 0x5c,
|
||||
+#define OP_reg13 0x5d,
|
||||
+#define OP_reg14 0x5e,
|
||||
+#define OP_reg15 0x5f,
|
||||
+#define OP_reg16 0x60,
|
||||
+#define OP_reg17 0x61,
|
||||
+#define OP_reg18 0x62,
|
||||
+#define OP_reg19 0x63,
|
||||
+#define OP_reg20 0x64,
|
||||
+#define OP_reg21 0x65,
|
||||
+#define OP_reg22 0x66,
|
||||
+#define OP_reg23 0x67,
|
||||
+#define OP_reg24 0x68,
|
||||
+#define OP_reg25 0x69,
|
||||
+#define OP_reg26 0x6a,
|
||||
+#define OP_reg27 0x6b,
|
||||
+#define OP_reg28 0x6c,
|
||||
+#define OP_reg29 0x6d,
|
||||
+#define OP_reg30 0x6e,
|
||||
+#define OP_reg31 0x6f,
|
||||
+#define OP_breg0(x) 0x70,SLEB128(x),
|
||||
+#define OP_breg1(x) 0x71,SLEB128(x),
|
||||
+#define OP_breg2(x) 0x72,SLEB128(x),
|
||||
+#define OP_breg3(x) 0x73,SLEB128(x),
|
||||
+#define OP_breg4(x) 0x74,SLEB128(x),
|
||||
+#define OP_breg5(x) 0x75,SLEB128(x),
|
||||
+#define OP_breg6(x) 0x76,SLEB128(x),
|
||||
+#define OP_breg7(x) 0x77,SLEB128(x),
|
||||
+#define OP_breg8(x) 0x78,SLEB128(x),
|
||||
+#define OP_breg9(x) 0x79,SLEB128(x),
|
||||
+#define OP_breg10(x) 0x7a,SLEB128(x),
|
||||
+#define OP_breg11(x) 0x7b,SLEB128(x),
|
||||
+#define OP_breg12(x) 0x7c,SLEB128(x),
|
||||
+#define OP_breg13(x) 0x7d,SLEB128(x),
|
||||
+#define OP_breg14(x) 0x7e,SLEB128(x),
|
||||
+#define OP_breg15(x) 0x7f,SLEB128(x),
|
||||
+#define OP_breg16(x) 0x80,SLEB128(x),
|
||||
+#define OP_breg17(x) 0x81,SLEB128(x),
|
||||
+#define OP_breg18(x) 0x82,SLEB128(x),
|
||||
+#define OP_breg19(x) 0x83,SLEB128(x),
|
||||
+#define OP_breg20(x) 0x84,SLEB128(x),
|
||||
+#define OP_breg21(x) 0x85,SLEB128(x),
|
||||
+#define OP_breg22(x) 0x86,SLEB128(x),
|
||||
+#define OP_breg23(x) 0x87,SLEB128(x),
|
||||
+#define OP_breg24(x) 0x88,SLEB128(x),
|
||||
+#define OP_breg25(x) 0x89,SLEB128(x),
|
||||
+#define OP_breg26(x) 0x8a,SLEB128(x),
|
||||
+#define OP_breg27(x) 0x8b,SLEB128(x),
|
||||
+#define OP_breg28(x) 0x8c,SLEB128(x),
|
||||
+#define OP_breg29(x) 0x8d,SLEB128(x),
|
||||
+#define OP_breg30(x) 0x8e,SLEB128(x),
|
||||
+#define OP_breg31(x) 0x8f,SLEB128(x),
|
||||
+#define OP_regx(x) 0x90,SLEB128(x),
|
||||
+#define OP_fbreg(x) 0x91,SLEB128(x),
|
||||
+#define OP_bregx(x,y) 0x92,ULEB128(x),SLEB128(y),
|
||||
+#define OP_piece(x) 0x93,ULEB128(x),
|
||||
+#define OP_deref_size(x) 0x94,VAL1(x),
|
||||
+#define OP_xderef_size(x) 0x95,VAL1(x),
|
||||
+#define OP_nop 0x96,
|
||||
+#define OP_nop_termination 0x96
|
||||
+#define OP_push_object_address 0x97,
|
||||
+#define OP_call2(x) 0x98,VAL2(x),
|
||||
+#define OP_call4(x) 0x99,VAL4(x),
|
||||
+/* #define OP_call_ref(x) 0x9a,... */
|
||||
+#define OP_form_tls_address(x) 0x9b,
|
||||
+#define OP_call_frame_cfa 0x9c,
|
||||
+#define OP_bit_piece(x) 0x9d,ULEB128(x),
|
||||
+/* #define OP_implicit_value(x...) 0x9e,... */
|
||||
+#define OP_stack_value 0x9f,
|
||||
+#define OP_GNU_push_tls_address 0xe0,
|
||||
+/* #define OP_GNU_encoded_addr(x...) 0xf1, */
|
||||
+
|
||||
+#define ASSERT_TOS_NON0 OP_bra(3) OP_skip(-3)
|
||||
+#define ASSERT_TOS_0 OP_lit0 OP_eq ASSERT_TOS_NON0
|
||||
+
|
||||
+/* Initially there is CFA value on the stack, we want to
|
||||
+ keep it there at the end. */
|
||||
+#define CFI_PROGRAM \
|
||||
+OP_lit0 OP_nop ASSERT_TOS_0 \
|
||||
+OP_lit1 ASSERT_TOS_NON0 \
|
||||
+OP_lit1 OP_const1u(1) OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit16 OP_const2u(16) OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit31 OP_const4u(31) OP_ne ASSERT_TOS_0 \
|
||||
+OP_lit1 OP_neg OP_const1s(-1) OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit16 OP_neg OP_const2s(-16) OP_ne ASSERT_TOS_0 \
|
||||
+OP_lit31 OP_const4s(-31) OP_neg OP_ne ASSERT_TOS_0 \
|
||||
+OP_lit7 OP_dup OP_plus_uconst(2) OP_lit9 OP_eq ASSERT_TOS_NON0 \
|
||||
+ OP_lit7 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit20 OP_lit1 OP_drop OP_lit20 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit17 OP_lit19 OP_over OP_lit17 OP_eq ASSERT_TOS_NON0 \
|
||||
+ OP_lit19 OP_eq ASSERT_TOS_NON0 OP_lit17 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit1 OP_lit2 OP_lit3 OP_lit4 OP_pick(2) OP_lit2 OP_eq ASSERT_TOS_NON0\
|
||||
+ OP_lit4 OP_eq ASSERT_TOS_NON0 OP_lit3 OP_eq ASSERT_TOS_NON0 \
|
||||
+ OP_pick(0) OP_lit2 OP_eq ASSERT_TOS_NON0 \
|
||||
+ OP_lit2 OP_eq ASSERT_TOS_NON0 OP_lit1 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit6 OP_lit12 OP_swap OP_lit6 OP_eq ASSERT_TOS_NON0 \
|
||||
+ OP_lit12 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit7 OP_lit8 OP_lit9 OP_rot OP_lit8 OP_eq ASSERT_TOS_NON0 \
|
||||
+ OP_lit7 OP_eq ASSERT_TOS_NON0 OP_lit9 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit7 OP_abs OP_lit7 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_const1s(-123) OP_abs OP_const1u(123) OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit3 OP_lit6 OP_and OP_lit2 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit3 OP_lit6 OP_or OP_lit7 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit17 OP_lit2 OP_minus OP_lit15 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_const1s(-6) OP_const1s(-2) OP_div OP_lit3 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_const1s(-6) OP_const1s(-4) OP_mod OP_const1s(-2) \
|
||||
+ OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit16 OP_lit31 OP_plus_uconst(1) OP_mul OP_const2u(512) \
|
||||
+ OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit5 OP_not OP_lit31 OP_and OP_lit26 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit12 OP_lit31 OP_plus OP_const1u(43) OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_const1s(-6) OP_lit2 OP_plus OP_const1s(-4) OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_const1s(-6) OP_plus_uconst(3) OP_const1s(-3) OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit16 OP_lit4 OP_shl OP_const2u(256) OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit16 OP_lit3 OP_shr OP_lit2 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_const1s(-16) OP_lit3 OP_shra OP_const1s(-2) OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit3 OP_lit6 OP_xor OP_lit5 OP_eq ASSERT_TOS_NON0 \
|
||||
+OP_lit3 OP_lit6 OP_le ASSERT_TOS_NON0 \
|
||||
+OP_lit3 OP_lit3 OP_le ASSERT_TOS_NON0 \
|
||||
+OP_lit6 OP_lit3 OP_le ASSERT_TOS_0 \
|
||||
+OP_lit3 OP_lit6 OP_lt ASSERT_TOS_NON0 \
|
||||
+OP_lit3 OP_lit3 OP_lt ASSERT_TOS_0 \
|
||||
+OP_lit6 OP_lit3 OP_lt ASSERT_TOS_0 \
|
||||
+OP_lit3 OP_lit6 OP_ge ASSERT_TOS_0 \
|
||||
+OP_lit3 OP_lit3 OP_ge ASSERT_TOS_NON0 \
|
||||
+OP_lit6 OP_lit3 OP_ge ASSERT_TOS_NON0 \
|
||||
+OP_lit3 OP_lit6 OP_gt ASSERT_TOS_0 \
|
||||
+OP_lit3 OP_lit3 OP_gt ASSERT_TOS_0 \
|
||||
+OP_lit6 OP_lit3 OP_gt ASSERT_TOS_NON0 \
|
||||
+OP_const1s(-6) OP_lit1 OP_shr OP_lit0 OP_gt ASSERT_TOS_NON0 \
|
||||
+OP_const1s(-6) OP_lit1 OP_shra OP_lit0 OP_lt ASSERT_TOS_NON0
|
||||
+
|
||||
+#define CFI_ESCAPE_VAL_2(VALUES...) #VALUES
|
||||
+#define CFI_ESCAPE_VAL_1(VALUES...) CFI_ESCAPE_VAL_2(VALUES)
|
||||
+#define CFI_ESCAPE_VAL(VALUES...) CFI_ESCAPE_VAL_1(VALUES)
|
||||
+#define CFI_ESCAPE do { } while (0)
|
||||
+#define CFI_ARCH_PROGRAM OP_nop_termination
|
||||
+#ifdef __GCC_HAVE_DWARF2_CFI_ASM
|
||||
+#if defined (__x86_64__)
|
||||
+#undef CFI_ESCAPE
|
||||
+#undef CFI_ARCH_PROGRAM
|
||||
+#define CFI_ARCH_PROGRAM CFI_PROGRAM OP_lit8 OP_minus OP_nop_termination
|
||||
+unsigned char cfi_arch_program[] = { CFI_ARCH_PROGRAM };
|
||||
+extern char verify_it[sizeof (cfi_arch_program) - 0x80 < 0x3f80 ? 1 : -1];
|
||||
+/* DW_CFA_expression %rip, uleb128(l2-l1), l1: program DW_OP_lit8 DW_OP_minus DW_OP_nop l2: */
|
||||
+#define CFI_ESCAPE \
|
||||
+ asm volatile (".cfi_escape 0x10, 0x10, (%P0&0x7f)+0x80, %P0>>7, " \
|
||||
+ CFI_ESCAPE_VAL (CFI_ARCH_PROGRAM) \
|
||||
+ : : "i" (sizeof (cfi_arch_program)))
|
||||
+#elif defined (__i386__)
|
||||
+#undef CFI_ESCAPE
|
||||
+#undef CFI_ARCH_PROGRAM
|
||||
+#define CFI_ARCH_PROGRAM CFI_PROGRAM OP_lit4 OP_minus OP_nop_termination
|
||||
+unsigned char cfi_arch_program[] = { CFI_ARCH_PROGRAM };
|
||||
+extern char verify_it[sizeof (cfi_arch_program) - 0x80 < 0x3f80 ? 1 : -1];
|
||||
+/* DW_CFA_expression %eip, uleb128(l2-l1), l1: program DW_OP_lit4 DW_OP_minus DW_OP_nop l2: */
|
||||
+#define CFI_ESCAPE \
|
||||
+ asm volatile (".cfi_escape 0x10, 8, (%P0&0x7f)+0x80, %P0>>7, " \
|
||||
+ CFI_ESCAPE_VAL (CFI_ARCH_PROGRAM) \
|
||||
+ : : "i" (sizeof (cfi_arch_program)))
|
||||
+#endif
|
||||
+#endif
|
||||
+static _Unwind_Reason_Code
|
||||
+force_unwind_stop (int version, _Unwind_Action actions,
|
||||
+ _Unwind_Exception_Class exc_class,
|
||||
+ struct _Unwind_Exception *exc_obj,
|
||||
+ struct _Unwind_Context *context,
|
||||
+ void *stop_parameter)
|
||||
+{
|
||||
+ if (actions & _UA_END_OF_STACK)
|
||||
+ abort ();
|
||||
+ return _URC_NO_REASON;
|
||||
+}
|
||||
+
|
||||
+static void force_unwind ()
|
||||
+{
|
||||
+ struct _Unwind_Exception *exc = malloc (sizeof (*exc));
|
||||
+ memset (&exc->exception_class, 0, sizeof (exc->exception_class));
|
||||
+ exc->exception_cleanup = 0;
|
||||
+
|
||||
+#ifndef __USING_SJLJ_EXCEPTIONS__
|
||||
+ _Unwind_ForcedUnwind (exc, force_unwind_stop, 0);
|
||||
+#else
|
||||
+ _Unwind_SjLj_ForcedUnwind (exc, force_unwind_stop, 0);
|
||||
+#endif
|
||||
+
|
||||
+ abort ();
|
||||
+}
|
||||
+
|
||||
+static void handler (void *p __attribute__((unused)))
|
||||
+{
|
||||
+ exit (0);
|
||||
+}
|
||||
+
|
||||
+__attribute__((noinline)) static void callme ()
|
||||
+{
|
||||
+ CFI_ESCAPE;
|
||||
+ force_unwind ();
|
||||
+}
|
||||
+
|
||||
+__attribute__((noinline)) static void doit ()
|
||||
+{
|
||||
+ char dummy __attribute__((cleanup (handler)));
|
||||
+ callme ();
|
||||
+}
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ doit ();
|
||||
+ abort ();
|
||||
+}
|
|
@ -0,0 +1,18 @@
|
|||
2009-10-19 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't regard
|
||||
the removal of a debug stmt as a significant change.
|
||||
|
||||
--- gcc/tree-ssa-dce.c.orig 2009-10-19 12:29:56.000000000 -0200
|
||||
+++ gcc/tree-ssa-dce.c 2009-10-19 12:30:36.000000000 -0200
|
||||
@@ -1129,8 +1129,9 @@ eliminate_unnecessary_stmts (void)
|
||||
/* If GSI is not necessary then remove it. */
|
||||
if (!gimple_plf (stmt, STMT_NECESSARY))
|
||||
{
|
||||
+ if (!is_gimple_debug (stmt))
|
||||
+ something_changed = true;
|
||||
remove_dead_stmt (&gsi, bb);
|
||||
- something_changed = true;
|
||||
}
|
||||
else if (is_gimple_call (stmt))
|
||||
{
|
|
@ -0,0 +1,19 @@
|
|||
2009-10-19 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
PR debug/41739
|
||||
* haifa-sched.c (try_ready): Skip debug deps updating speculation
|
||||
status.
|
||||
|
||||
--- gcc/haifa-sched.c.orig 2009-10-19 11:28:14.000000000 -0200
|
||||
+++ gcc/haifa-sched.c 2009-10-19 11:33:19.000000000 -0200
|
||||
@@ -3754,6 +3754,10 @@ try_ready (rtx next)
|
||||
{
|
||||
ds_t ds = DEP_STATUS (dep) & SPECULATIVE;
|
||||
|
||||
+ if (DEBUG_INSN_P (DEP_PRO (dep))
|
||||
+ && !DEBUG_INSN_P (next))
|
||||
+ continue;
|
||||
+
|
||||
if (first_p)
|
||||
{
|
||||
first_p = false;
|
Loading…
Reference in New Issue