Fix sigsegv on -fdump-tree-all-enumerate_locals
authorTom de Vries <tdevries@suse.de>
Sat, 7 Jul 2018 11:08:27 +0000 (11:08 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Sat, 7 Jul 2018 11:08:27 +0000 (11:08 +0000)
2018-07-07  Tom de Vries  <tdevries@suse.de>

* tree-dfa.c (dump_enumerated_decls): Handle cfun->cfg == NULL.

* gcc.misc-tests/options.exp (check_for_all_options): Clean up dump
files.
(get_dump_flags): New proc.
(toplevel): Test all dump flags.

From-SVN: r262500

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.misc-tests/options.exp
gcc/tree-dfa.c

index 986b54f61105818196608ff59523f702446a9250..350ebf518c5ec37b3a0ae7391d750a9776260efc 100644 (file)
@@ -1,3 +1,7 @@
+2018-07-07  Tom de Vries  <tdevries@suse.de>
+
+       * tree-dfa.c (dump_enumerated_decls): Handle cfun->cfg == NULL.
+
 2018-07-07  Aldy Hernandez  <aldyh@redhat.com>
 
        * tree-vrp.c (vrp_int_const_binop): Change overflow type to
index 1534e922320b0c32cf0e01e8d50261f9046c2ea7..04d705d68d2bd325f17b0991f10709fb595f342a 100644 (file)
@@ -1,3 +1,10 @@
+2018-07-07  Tom de Vries  <tdevries@suse.de>
+
+       * gcc.misc-tests/options.exp (check_for_all_options): Clean up dump
+       files.
+       (get_dump_flags): New proc.
+       (toplevel): Test all dump flags.
+
 2018-07-07  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gnat.dg/stack_usage6.adb: New test.
index 693b40df1fd61bec8a8582b3fc3e5bc6be6b8ba0..faeae705c086678f3627f6fbe7cf239b2d0b4ef9 100644 (file)
@@ -52,6 +52,10 @@ proc check_for_all_options {language gcc_options compiler_pattern as_pattern ld_
     }
     set gcc_output [gcc_target_compile $filename.c $filename.x executable $gcc_options]
     remote_file build delete $filename.c $filename.x $filename.gcno
+    set dumpfiles [glob -nocomplain $filename.c.*]
+    foreach dumpfile $dumpfiles {
+       remote_file build delete $dumpfile
+    }   
 
     if {![regexp -- "/${compiler}(\\.exe)? -quiet.*$compiler_pattern" $gcc_output]} {
        fail "$test (compiler options)"
@@ -70,4 +74,38 @@ proc check_for_all_options {language gcc_options compiler_pattern as_pattern ld_
 
 check_for_all_options c {--coverage} {-fprofile-arcs -ftest-coverage} {} {-lgcov}
 
+proc get_dump_flags {} {
+    set res [list]
+
+    global srcdir
+    set file "$srcdir/../dumpfile.c"
+    
+    set a [open $file]
+    set lines [split [read $a] "\n"]
+    close $a
+
+    set domatch 0
+    foreach line $lines {
+       if { [regexp "dump_options.* =" $line] } {
+           set domatch 1
+       } elseif { [regexp "^\};" $line] } {
+           set domatch 0
+       }
+       if { $domatch } {
+           if { [regexp "\"(.*)\"" $line match submatch] } {
+               lappend res $submatch
+           }
+       }
+    }
+
+    return $res
+}
+
+foreach flag [get_dump_flags] {
+    check_for_all_options c -fdump-tree-all-$flag {} {} {}
+    check_for_all_options c -fdump-ipa-all-$flag {} {} {}
+    check_for_all_options c -fdump-rtl-all-$flag {} {} {}
+    check_for_all_options c -fdump-lang-all-$flag {} {} {}
+}
+
 gcc_parallel_test_enable 1
index 00aa75f47ab03e46d7ca4b1b7e44f12f4716c51c..ee2ff2958dbe53f13fc3bbd1d2840170cec12960 100644 (file)
@@ -992,6 +992,9 @@ dump_enumerated_decls_push (tree *tp, int *walk_subtrees, void *data)
 void
 dump_enumerated_decls (FILE *file, dump_flags_t flags)
 {
+  if (!cfun->cfg)
+    return;
+
   basic_block bb;
   struct walk_stmt_info wi;
   auto_vec<numbered_tree, 40> decl_list;