re PR target/37394 (Segfault in ia64_variable_issue with -O -fschedule-insns2)
authorH.J. Lu <hjl@gcc.gnu.org>
Thu, 18 Sep 2008 20:27:36 +0000 (13:27 -0700)
committerH.J. Lu <hjl@gcc.gnu.org>
Thu, 18 Sep 2008 20:27:36 +0000 (13:27 -0700)
gcc/

2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>

PR target/37394
* config/ia64/ia64.c (ia64_optimization_options): Move
checking and setting flag_schedule_insns_after_reload and
ia64_flag_schedule_insns2 back to ...
(ia64_override_options): Here.

gcc/testsuite/

2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>

PR target/37394
* g++.dg/other/pr37394.C: New.

From-SVN: r140475

gcc/ChangeLog
gcc/config/ia64/ia64.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/pr37394.C [new file with mode: 0644]

index 25f2297..37170cc 100644 (file)
@@ -1,3 +1,11 @@
+2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/37394
+       * config/ia64/ia64.c (ia64_optimization_options): Move
+       checking and setting flag_schedule_insns_after_reload and
+       ia64_flag_schedule_insns2 back to ...
+       (ia64_override_options): Here.
+
 2008-09-18  Andrew Pinski  <andrew_pinski@playstation.sony.com>
 
        PR rtl-opt/37451
index 28abf27..81767bb 100644 (file)
@@ -5233,6 +5233,9 @@ ia64_override_options (void)
       TARGET_INLINE_SQRT = INL_MAX_THR;
     }
 
+  ia64_flag_schedule_insns2 = flag_schedule_insns_after_reload;
+  flag_schedule_insns_after_reload = 0;
+
   ia64_section_threshold = g_switch_set ? g_switch_value : IA64_DEFAULT_GVALUE;
 
   init_machine_status = ia64_init_machine_status;
@@ -9922,13 +9925,6 @@ void
 ia64_optimization_options (int level ATTRIBUTE_UNUSED,
                            int size ATTRIBUTE_UNUSED)
 {
-  /* Disable the second machine independent scheduling pass and use one for the
-     IA-64.  This needs to be here instead of in OVERRIDE_OPTIONS because this
-     is done whenever the optimization is changed via #pragma GCC optimize or
-     attribute((optimize(...))).  */
-  ia64_flag_schedule_insns2 = flag_schedule_insns_after_reload;
-  flag_schedule_insns_after_reload = 0;
-
   /* Let the scheduler form additional regions.  */
   set_param_value ("max-sched-extend-regions-iters", 2);
 
index ea13346..66f16b1 100644 (file)
@@ -1,10 +1,15 @@
+2008-09-18  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/37394
+       * g++.dg/other/pr37394.C: New.
+
 2008-09-18  Paul Thomas  <pault@gcc.gnu.org>
 
-       PR fortran/35945
-       * gfortran.dg/host_assoc_types_2.f90: New test.
+       PR fortran/35945
+       * gfortran.dg/host_assoc_types_2.f90: New test.
 
-       PR fortran/36700
-       * gfortran.dg/host_assoc_call_2.f90: New test.
+       PR fortran/36700
+       * gfortran.dg/host_assoc_call_2.f90: New test.
 
 2008-09-18  DJ Delorie  <dj@redhat.com>
 
diff --git a/gcc/testsuite/g++.dg/other/pr37394.C b/gcc/testsuite/g++.dg/other/pr37394.C
new file mode 100644 (file)
index 0000000..7b5772e
--- /dev/null
@@ -0,0 +1,12 @@
+// Origin: Martin Michlmayr <tbm@cyrius.com>
+// { dg-do compile { target ia64-*-* } }
+// { dg-options "-O -fschedule-insns2" }
+
+struct _Words
+{
+  void *_M_pword;
+  _Words ():
+   _M_pword (0)
+  {
+  }
+} _M_word_zero;