[PATCH v3] handle MEM_REF with void* arguments (PR c++/95768)

Martin Sebor msebor@gmail.com
Thu Jan 7 21:36:17 GMT 2021


On 1/7/21 1:26 AM, Jakub Jelinek wrote:
> On Sat, Jan 02, 2021 at 03:22:25PM -0700, Martin Sebor via Gcc-patches wrote:
>> PR c++/95768 - pretty-printer ICE on -Wuninitialized with allocated storage
>>
>> gcc/c-family/ChangeLog:
>>
>> 	PR c++/95768
>> 	* c-pretty-print.c (c_pretty_printer::primary_expression): For
>> 	SSA_NAMEs print VLA names and GIMPLE defining statements.
>> 	(print_mem_ref): New function.
>> 	(c_pretty_printer::unary_expression): Call it.
> 
> This broke:
> +FAIL: gcc.dg/plugin/gil-1.c -fplugin=./analyzer_gil_plugin.so  (test for warnings, line 16)
> +FAIL: gcc.dg/plugin/gil-1.c -fplugin=./analyzer_gil_plugin.so  (test for warnings, line 63)
> +FAIL: gcc.dg/plugin/gil-1.c -fplugin=./analyzer_gil_plugin.so (test for excess errors)
> and
> +FAIL: g++.dg/cpp0x/constexpr-trivial2.C  -std=c++11  (test for errors, line 13)
> +FAIL: g++.dg/cpp0x/constexpr-trivial2.C  -std=c++11 (test for excess errors)
> The former one is just a different printing of the MEM_REF from what the
> test expects, but the latter is an ICE (one needs
> make check-c++-all RUNTESTFLAGS=dg.exp=constexpr-trivial2.C
> to reproduce or GXX_TESTSUITE_STDS=11 or similar as C++11 is not tested by
> default).

I saw the gcc.dg/plugin/gil-1.c failure but missed the subtle difference
in the output.  Rerunning the test didn't show any failures so I assumed
it was something transient.  But when I tried gain today and looked more
carefully at the output I saw the test doesn't run at all by itself.
This doesn't work:

  $ nice make -C /ssd/test/build/gcc-95768/gcc check-c 
RUNTESTFLAGS="plugin.exp=gil-1.c"

Is there some special magic to get it to run by itself or do these
tests just not do that?

Running all the plugin tests does work but also shows the failures
below that don't show up in the final summary (or on gcc-testresults).
I assume those are unrelated (I think I've seen this test fail in
a similarly mysterious way before).

FAIL: gcc.dg/plugin/diagnostic-test-expressions-1.c 
-fplugin=./diagnostic_plugin_test_tree_expression_range.so  1 blank 
line(s) in output
FAIL: gcc.dg/plugin/diagnostic-test-expressions-1.c 
-fplugin=./diagnostic_plugin_test_tree_expression_range.so  expected 
multiline pattern lines 550-551 not found: " 
__builtin_types_compatible_p \(long, int\) \+ f \(i\)\);.*\n 
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\^~~~~~~\n"
FAIL: gcc.dg/plugin/diagnostic-test-expressions-1.c 
-fplugin=./diagnostic_plugin_test_tree_expression_range.so (test for 
excess errors)

Martin

PS I committed a fix for both the ICE and the gil-1.c failure
in r11-6532.


More information about the Gcc-patches mailing list