On 07/05/2015 06:07 AM, Prathamesh Kulkarni wrote:
Hi,
Passing -dx causes segmentation fault:
Test case: void f(void) {}
./test.c: In function 'f':
../test.c:3:1: internal compiler error: Segmentation fault
}
^
0xab6baf crash_signal
/home/prathamesh.kulkarni/gnu-toolchain/src/gcc.git/gcc/toplev.c:366
0x694b14 verify_flow_info()
/home/prathamesh.kulkarni/gnu-toolchain/src/gcc.git/gcc/cfghooks.c:109
0x9f7e64 execute_function_todo
/home/prathamesh.kulkarni/gnu-toolchain/src/gcc.git/gcc/passes.c:1997
0x9f86eb execute_todo
/home/prathamesh.kulkarni/gnu-toolchain/src/gcc.git/gcc/passes.c:2042
Started with r210068.
It looks like -dx causes cfun->cfg to be NULL, and hence the segfault
in verify_flow_info().
The attached patch tries to fix it by adding a check to cfun->cfg before calling
verify_flow_info() from execute_function_todo().
Bootstrapped and tested on x86_64-unknown-linux-gnu.
OK for trunk ?
This needs a testcase for the testsuite.
My gut tells me a comment is needed in here to document why
verify_flow_info is different than the other checkers which require a
CFG (because verify_flow_info also applies to the RTL CFG which won't be
built when -dx is in effect).
Jeff