]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/53590 (compiler fails to generate SIMD instruction for FP division)
authorEric Botcazou <ebotcazou@adacore.com>
Thu, 10 Jul 2014 10:38:30 +0000 (10:38 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 10 Jul 2014 10:38:30 +0000 (10:38 +0000)
PR middle-end/53590
* function.c (allocate_struct_function): Revert r188667 change.

* gimple-low.c (lower_builtin_setjmp): Use properly-typed constant.

From-SVN: r212424

gcc/ChangeLog
gcc/function.c
gcc/gimple-low.c
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/opt39.adb [new file with mode: 0644]

index bc76db4051cd2f34c23c64c8a2504400b62919e7..075aa789171f86a7ec7a2126c88f20cd3ab110b3 100644 (file)
@@ -1,3 +1,10 @@
+2014-07-10  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR middle-end/53590
+       * function.c (allocate_struct_function): Revert r188667 change.
+
+       * gimple-low.c (lower_builtin_setjmp): Use properly-typed constant.
+
 2014-07-10  Tom G. Christensen  <tgc@jupiterrise.com>
 
        * doc/install.texi: Remove links to defunct package providers for
index a0a3bc7526bcdc1048c64cf5fce1939b70c27c9d..922ef3d7b2fe5b3872953a97994682a2bae8e9e7 100644 (file)
@@ -4549,6 +4549,7 @@ allocate_struct_function (tree fndecl, bool abstract_p)
       /* ??? This could be set on a per-function basis by the front-end
          but is this worth the hassle?  */
       cfun->can_throw_non_call_exceptions = flag_non_call_exceptions;
+      cfun->can_delete_dead_exceptions = flag_delete_dead_exceptions;
     }
 }
 
index 6a5b2e1f4b2f951ab12b9aef81ee917a10222af8..c8a6e6b57fbe50a8e9cb8dd4fe1b2848ee05704c 100644 (file)
@@ -720,7 +720,7 @@ lower_builtin_setjmp (gimple_stmt_iterator *gsi)
      these builtins are modelled as non-local label jumps to the label
      that is passed to these two builtins, so pretend we have a non-local
      label during GIMPLE passes too.  See PR60003.  */ 
-  cfun->has_nonlocal_label = true;
+  cfun->has_nonlocal_label = 1;
 
   /* NEXT_LABEL is the label __builtin_longjmp will jump to.  Its address is
      passed to both __builtin_setjmp_setup and __builtin_setjmp_receiver.  */
index d9542f4fa33ee55880fc822a16c4672a7fccbf54..054497b27a93c3d31bfb44f276abb25ab48da805 100644 (file)
@@ -1,3 +1,7 @@
+2014-07-10  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat.dg/opt39.adb: New test.
+
 2014-07-10  Yuri Rumyantsev  <ysrumyan@gmail.com>
 
        PR tree-optimization/61742
diff --git a/gcc/testsuite/gnat.dg/opt39.adb b/gcc/testsuite/gnat.dg/opt39.adb
new file mode 100644 (file)
index 0000000..a00cac7
--- /dev/null
@@ -0,0 +1,31 @@
+-- { dg-do compile }
+-- { dg-options "-O2 -fno-inline -fdump-tree-optimized" }
+
+procedure Opt39 (I : Integer) is
+
+  type Rec is record
+    I1 : Integer;
+    I2 : Integer;
+    I3 : Integer;
+    I4 : Integer;
+    I5 : Integer;
+  end record;
+
+  procedure Set (A : access Rec; I : Integer) is
+    Tmp : Rec := A.all;
+  begin
+    Tmp.I1 := I;
+    A.all := Tmp;
+  end;
+
+  R : aliased Rec;
+
+begin
+  Set (R'Access, I);
+  if R.I1 /= I then
+    raise Program_Error;
+  end if;
+end;
+
+-- { dg-final { scan-tree-dump-times "MEM" 1 "optimized" } }
+-- { dg-final { cleanup-tree-dump "optimized" } }