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 ?
Thank you,
Prathamesh
diff --git a/gcc/passes.c b/gcc/passes.c
index 4966334..8362554 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -1965,7 +1965,8 @@ execute_function_todo (function *fn, void *data)
/* IPA passes leave basic-blocks unsplit, so make sure to
not trip on that. */
if ((cfun->curr_properties & PROP_cfg)
- && !from_ipa_pass)
+ && !from_ipa_pass
+ && cfun->cfg)
verify_flow_info ();
if (current_loops
&& loops_state_satisfies_p (LOOP_CLOSED_SSA))
2015-07-05 Prathamesh Kulkarni <[email protected]>
* passes.c (execute_function_todo): Check for cfun->cfg before calling
verify_flow_info().