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: Prevent -Og from deleting stores to write-only variables


Jakub Jelinek <jakub@redhat.com> writes:
> On Sun, Jul 07, 2019 at 10:41:43AM +0100, Richard Sandiford wrote:
>> gcc/testsuite/
>> 	* c-c++-common/guality/Og-static-wo-1.c: New test.
>> 	* g++.dg/guality/guality.exp: Separate the c-c++-common tests into
>> 	"Og" and "general" tests.  Run the latter at -O0 and -Og only.
>
> Do we really want further filename prefixes based tests?
> I find it extremely ugly in /vect/ and would appreciate not to add further
> ones.

But IMO the reason the /vect/ stuff is so ugly is that we use prefixes
for things that ought to be in dg-additional-options instead (-fno-tree-dce,
-fno-tree-sra, -fwrapv, -ftrapv, etc.).

I think the core vect.exp split between bb-slp-* and loop vectorisation
makes more sense though.  We're testing two different modes of
vectorisation, and at least in principle, it's better to differentiate
between them in one place rather than in each individual test.

The same idea applies here.  guality.exp is testing how optimisation
affects debug info quality, and we have two major modes: optimise normally,
or optimise for the debug experience.  Some things are fundamentally
only going to work with the latter.

> The tests can just use dg-skip-if, can't they?
> /* { dg-skip-if "" { *-*-* }  { "*" } { "-O0" "-Og" } } */
> would do it.

Yeah, but I'd rather not maintain the list in each individual test.
E.g. I'd still like to add -O1g/-O1+g etc. at some point.

Would having a subdirectory for the new tests be better?  Either with
or without a separate .exp harness.

Richard

>
>> --- gcc/testsuite/g++.dg/guality/guality.exp	2019-07-01 10:15:31.000000000 +0100
>> +++ gcc/testsuite/g++.dg/guality/guality.exp	2019-07-07 10:29:19.999365874 +0100
>> @@ -65,8 +65,22 @@ if {[check_guality "
>>      return 0;
>>    }
>>  "]} {
>> -  gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.C]] "" ""
>> -  gcc-dg-runtest [lsort [glob $srcdir/c-c++-common/guality/*.c]] "" ""
>> +    set general [list]
>> +    set Og [list]
>> +    foreach file [lsort [glob $srcdir/c-c++-common/guality/*.c]] {
>> +	switch -glob -- [file tail $file] {
>> +	    Og-* { lappend Og $file }
>> +	    * { lappend general $file }
>> +	}
>> +    }
>> +
>> +    gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.C]] "" ""
>> +    gcc-dg-runtest $general "" ""
>> +    set-torture-options \
>> +	[list "-O0" "-Og"] \
>> +	[list {}] \
>> +	[list "-Og -flto"]
>> +    gcc-dg-runtest $Og "" ""
>>  }
>>  
>>  if [info exists guality_gdb_name] {
>> Index: gcc/testsuite/gcc.dg/guality/guality.exp
>> ===================================================================
>> --- gcc/testsuite/gcc.dg/guality/guality.exp	2019-07-01 10:15:31.000000000 +0100
>> +++ gcc/testsuite/gcc.dg/guality/guality.exp	2019-07-07 10:29:19.999365874 +0100
>> @@ -80,8 +80,22 @@ if {[check_guality "
>>      return 0;
>>    }
>>  "]} {
>> -  gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.c]] "" ""
>> -  gcc-dg-runtest [lsort [glob $srcdir/c-c++-common/guality/*.c]] "" "-Wc++-compat"
>> +    set general [list]
>> +    set Og [list]
>> +    foreach file [lsort [glob $srcdir/c-c++-common/guality/*.c]] {
>> +	switch -glob -- [file tail $file] {
>> +	    Og-* { lappend Og $file }
>> +	    * { lappend general $file }
>> +	}
>> +    }
>> +
>> +    gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.c]] "" ""
>> +    gcc-dg-runtest $general "" "-Wc++-compat"
>> +    set-torture-options \
>> +	[list "-O0" "-Og"] \
>> +	[list {}] \
>> +	[list "-Og -flto"]
>> +    gcc-dg-runtest $Og "" "-Wc++-compat"
>>  }
>>  
>>  if [info exists guality_gdb_name] {
>
> 	Jakub


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