On Mon, Nov 4, 2013 at 5:57 PM, Jeff Law <l...@redhat.com> wrote: > > * Makefile.in (OBJS): Add gimple-ssa-isolate-paths.o > * common.opt (-fisolate-erroneous-paths): Add option and > documentation. > * gimple-ssa-isolate-paths.c: New file. > * gimple.c (check_loadstore): New function. > (infer_nonnull_range): Moved into gimple.c from tree-vrp.c > Verify OP is in the argument list and the argument corresponding > to OP is a pointer type. Use operand_equal_p rather than > pointer equality when testing if OP is on the nonnull list. > Use check_loadstore rather than count_ptr_derefs. Handle > GIMPLE_RETURN statements. > * tree-vrp.c (infer_nonnull_range): Remove. > * gimple.h (infer_nonnull_range): Declare. > * opts.c (default_options_table): Add OPT_fisolate_erroneous_paths. > * passes.def: Add pass_isolate_erroneous_paths. > * timevar.def (TV_ISOLATE_ERRONEOUS_PATHS): New timevar. > * tree-pass.h (make_pass_isolate_erroneous_paths): Declare. > * tree-ssa.c (struct count_ptr_d): Remove. > (count_ptr_derefs, count_uses_and_derefs): Remove. > * tree-ssa.h (count_uses_and_derefs): Remove. > > > > * gcc.dg/pr38984.c: Add -fno-isolate-erroneous-paths. > * gcc.dg/tree-ssa/isolate-1.c: New test. > * gcc.dg/tree-ssa/isolate-2.c: New test. > * gcc.dg/tree-ssa/isolate-3.c: New test. > * gcc.dg/tree-ssa/isolate-4.c: New test.
This patch actually breaks the Go testsuite. In Go dereferencing a nil pointer is well-defined: it causes panic that can be caught. This breaks a test for that functionality by changing the panic to a builtin_trap. That's not a big deal; I'll just disable this optimization in the Go frontend. What I'm really writing about is that it seems to me that there should be some docs for this new option in gcc/doc/invoke.texi. I don't see any. Ian