[lto] Fixup loops before lto write-out
authorRichard Biener <rguenther@suse.de>
Thu, 26 Apr 2018 13:26:25 +0000 (13:26 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Thu, 26 Apr 2018 13:26:25 +0000 (13:26 +0000)
2018-04-26  Richard Biener <rguenther@suse.de>
    Tom de Vries  <tom@codesourcery.com>

PR lto/85422
* lto-streamer-out.c (output_function): Fixup loops if required to match
discovery done in the reader.

* testsuite/libgomp.oacc-c-c++-common/pr85422.c: New test.

Co-Authored-By: Tom de Vries <tom@codesourcery.com>
From-SVN: r259675

gcc/ChangeLog
gcc/lto-streamer-out.c
libgomp/ChangeLog
libgomp/testsuite/libgomp.oacc-c-c++-common/pr85422.c [new file with mode: 0644]

index 2fed948fd220a3e942f1dba72a21dd4ac880a254..61d92f8fa8e8cb0d4e23edaf9de504dc0900fafd 100644 (file)
@@ -1,3 +1,10 @@
+2018-04-26  Richard Biener <rguenther@suse.de>
+           Tom de Vries  <tom@codesourcery.com>
+
+       PR lto/85422
+       * lto-streamer-out.c (output_function): Fixup loops if required to match
+       discovery done in the reader.
+
 2018-04-26  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/85116
index 1d2ab9757f1a3352f03f03028e59358a4f210683..70476dc6da8630b6de00152e8fbb151a0b02a326 100644 (file)
@@ -2120,6 +2120,9 @@ output_function (struct cgraph_node *node)
      debug info.  */
   if (gimple_has_body_p (function))
     {
+      /* Fixup loops if required to match discovery done in the reader.  */
+      loop_optimizer_init (AVOID_CFG_MODIFICATIONS);
+
       streamer_write_uhwi (ob, 1);
       output_struct_function_base (ob, fn);
 
@@ -2177,6 +2180,7 @@ output_function (struct cgraph_node *node)
 
       output_cfg (ob, fn);
 
+      loop_optimizer_finalize ();
       pop_cfun ();
    }
   else
index 4d622d9ff1dba28c7c65c99799ac6555394d5fc8..e498a0813e6b25cf472bc53e1417ac3201e82a24 100644 (file)
@@ -1,3 +1,9 @@
+2018-04-26  Richard Biener <rguenther@suse.de>
+           Tom de Vries  <tom@codesourcery.com>
+
+       PR lto/85422
+       * testsuite/libgomp.oacc-c-c++-common/pr85422.c: New test.
+
 2018-04-26  Tom de Vries  <tom@codesourcery.com>
 
        PR target/85519
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/pr85422.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr85422.c
new file mode 100644 (file)
index 0000000..bcc551d
--- /dev/null
@@ -0,0 +1,13 @@
+/* { dg-do link } */
+
+int
+main (void)
+{
+  #pragma acc parallel
+  #pragma acc loop
+  for (int i = 1; i < 10; i++)
+    for (;;)
+      ;
+
+  return 0;
+}