[Bug tree-optimization/69212] New: g++ ICE (segfault) at -O3 on x86_64-linux-gnu in fsm_find_control_statement_thread_paths

helloqirun at gmail dot com gcc-bugzilla@gcc.gnu.org
Sat Jan 9 22:34:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69212

            Bug ID: 69212
           Summary: g++ ICE (segfault) at -O3 on x86_64-linux-gnu in
                    fsm_find_control_statement_thread_paths
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: helloqirun at gmail dot com
  Target Milestone: ---

The following code causes an ICE when compiled with the current g++ trunk at
-O3 on x86_64-linux-gnu in both 32-bit and 64-bit modes. 


$ g++-trunk -v
Using built-in specs.
COLLECT_GCC=g++-trunk
COLLECT_LTO_WRAPPER=/home/absozero/trunk/root-gcc/libexec/gcc/x86_64-pc-linux-gnu/6.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc/configure --prefix=/home/absozero/trunk/root-gcc
--enable-languages=c,c++ --disable-werror --enable-multilib
Thread model: posix
gcc version 6.0.0 20160109 (experimental) [trunk revision 232190] (GCC)




$ g++-trunk -c -O3 abc.cc
abc.cc: In function ?void fn2(int)?:
abc.cc:10:19: error: unknown register name ?? in ?asm?
   asm("" : : : "");
                   ^

abc.cc:10:19: error: unknown register name ?? in ?asm?
   asm("" : : : "");
                   ^

abc.cc:10:19: error: unknown register name ?? in ?asm?
   asm("" : : : "");
                   ^

abc.cc:10:19: error: unknown register name ?? in ?asm?
   asm("" : : : "");
                   ^

abc.cc:10:19: error: unknown register name ?? in ?asm?
   asm("" : : : "");
                   ^

abc.cc:10:19: error: unknown register name ?? in ?asm?
   asm("" : : : "");
                   ^

abc.cc:10:19: error: unknown register name ?? in ?asm?
   asm("" : : : "");
                   ^

abc.cc:10:19: error: unknown register name ?? in ?asm?
   asm("" : : : "");
                   ^

abc.cc:10:19: error: unknown register name ?? in ?asm?
   asm("" : : : "");
                   ^

abc.cc: In function ?void fn2(int)?:
abc.cc:4:6: internal compiler error: Segmentation fault
 void fn2(int p1) {
      ^~~

0xd04cdf crash_signal
        ../../gcc/gcc/toplev.c:334
0x14549b5 fsm_find_control_statement_thread_paths
        ../../gcc/gcc/tree-ssa-threadbackward.c:102
0x1455be4 find_jump_threads_backwards(edge_def*)
        ../../gcc/gcc/tree-ssa-threadbackward.c:382
0xeec0b4 thread_across_edge(gcond*, edge_def*, bool, const_and_copies*,
avail_exprs_stack*, tree_node* (*)(gimple*, gimple*, avail_exprs_stack*))
        ../../gcc/gcc/tree-ssa-threadedge.c:1027
0xe25a37 dom_opt_dom_walker::thread_across_edge(edge_def*)
        ../../gcc/gcc/tree-ssa-dom.c:945
0xe25c79 dom_opt_dom_walker::after_dom_children(basic_block_def*)
        ../../gcc/gcc/tree-ssa-dom.c:1396
0x1385777 dom_walker::walk(basic_block_def*)
        ../../gcc/gcc/domwalk.c:307
0xe280a8 execute
        ../../gcc/gcc/tree-ssa-dom.c:613
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.




-------------
$ cat abc.cc
double a;
int b;
void fn1();
void fn2(int p1) {
l:
  b = a;
  if (p1)
    if (a)
      goto l;
  asm("" : : : "");
  fn2(1);
  fn1();
}


More information about the Gcc-bugs mailing list