On Sat, Dec 27, 2014 at 09:34:44AM -0800, Mike Stump wrote:
> >>> Please consider pulling the check out and putting it in at the top of the
> >>> ubsan.exp type of files.
> >>>
> >>> I suspect there is little need to check this more than once per language
> >>> or so.
> >
> > Actually, that is already how it is done :-)
>
> No, examine i386.exp for the line at the top that does this:
>
> # Exit immediately if this isn't a x86 target.
>
> if { ![istarget i?86*-*-*] && ![istarget x86_64-*-*] } then {
> return
> }
>
> Here, you see that if there are 100,000 x86 test cases, this is checked once
> and only about 2 lines of tcl are run. In yours, if there were 100,000 ubsan
> test cases, you would discover millions of lines run, not 2. millions is
> slightly more than 2.
>From gcc.dg/ubsan/ubsan.exp:
# Main loop.
if [check_effective_target_fsanitize_undefined] {
gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c
$srcdir/c-c++-common/ubsan/*.c]] "" ""
}
That only runs once, doesn't it? Am I missing something?
There are some init things before it, but they may be needed for the
check itself.
Segher