re PR target/78213 (-fself-test fails on aarch64)
authorAldy Hernandez <aldyh@redhat.com>
Wed, 23 Nov 2016 12:18:23 +0000 (12:18 +0000)
committerAldy Hernandez <aldyh@gcc.gnu.org>
Wed, 23 Nov 2016 12:18:23 +0000 (12:18 +0000)
PR target/78213
* opts.c (finish_options): Set -fsyntax-only if running self
tests.

From-SVN: r242748

gcc/ChangeLog
gcc/opts.c
gcc/testsuite/gcc.dg/pr78213.c [new file with mode: 0644]

index 192d6e4ae15addff87adeea9de0a54254039d242..ec1fe967e832723d6f4e98b161e90a3ff9c3e07f 100644 (file)
@@ -1,3 +1,9 @@
+2016-11-23  Aldy Hernandez  <aldyh@redhat.com>
+
+       PR target/78213
+       * opts.c (finish_options): Set -fsyntax-only if running self
+       tests.
+
 2016-11-23  Richard Biener  <rguenther@suse.de>
 
        PR middle-end/71762
index d2d6100c0f7c76c799146e97a1303a587addf67d..cb20154d1949e9ee249253327a3e4cd49d1ef2ac 100644 (file)
@@ -744,6 +744,14 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set,
       opts->x_flag_toplevel_reorder = 0;
     }
 
+  /* -fself-test depends on the state of the compiler prior to
+     compiling anything.  Ideally it should be run on an empty source
+     file.  However, in case we get run with actual source, assume
+     -fsyntax-only which will inhibit any compiler initialization
+     which may confuse the self tests.  */
+  if (opts->x_flag_self_test)
+    opts->x_flag_syntax_only = 1;
+
   if (opts->x_flag_tm && opts->x_flag_non_call_exceptions)
     sorry ("transactional memory is not supported with non-call exceptions");
 
diff --git a/gcc/testsuite/gcc.dg/pr78213.c b/gcc/testsuite/gcc.dg/pr78213.c
new file mode 100644 (file)
index 0000000..e43c83c
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-fself-test" } */
+
+/* Verify that -fself-test does not fail on a non empty source.  */
+
+int i;                                                                          void bar();                                                                     void foo()
+{
+  while (i--)
+    bar();
+}
+/* { dg-message "fself\-test: " "-fself-test" { target *-*-* } 0 } */