This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: fix segfault in verify_flow_info() with -dx option


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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]