dg-skip-if on powerpc when multiple cpu cflags specified
Joel Sherrill
joel.sherrill@oarcorp.com
Thu Apr 24 23:14:00 GMT 2008
Janis Johnson wrote:
> On Wed, 2008-04-23 at 10:56 -0500, Joel Sherrill wrote:
>
>> Hi,
>>
>> I am returning to this issue and it is more
>> pressing testing powerpc on 4.3.0 and the trunk.
>> powerpc-rtems has gone from a relatively small
>> percentage of failures to >8300 and this warning
>> shows up a lot (5120334 times)!
>>
>> Warning: /home/joel/work-gnat/svn/b-gcc1-powerpc/rtems_gcc_main.o uses
>> hard float,
>> /home/joel/work-gnat/svn/b-gcc1-powerpc/gcc/testsuite/gcc/20010124-1.x0
>> uses soft float
>>
>> $ grep "hard float" ./gcc/testsuite/gcc/gcc.log | wc -l
>> 5120334
>>
>> The target is psim/603e.
>> rtems_gcc_main.o is the configuration file and RTEMS
>> initialization task setup for the gcc tests.
>> This file and the RTEMS library for were compiled with
>> hard float.
>>
>> On this target, we really need to skip these tests to
>> get rid of all this noise. I can't even begin to tell what
>> else is broken.
>>
>> I had the impression you weren't happy with the code
>> you proposed and didn't sweep it in. Is it an acceptable
>> solution? Or do you all have another idea?
>>
>
> I don't think it's workable, but I understand that the
> problem does require a solution.
That was the impression before. This is a real
problem that needs to be fixed. It is just going
to be tricky to get right.
This is also a cross-target testing issue. Other
architectures have similar tests but maybe not
quite as many as the PowerPC.
> Is this a fair statement
> of the problem?
>
> Multilib options can include -mcpu= or -march=.
>
> Many target-specific tests use dg-options to specify use
> of -mcpu= or -march= for that test.
>
> Multilib options appear in the command line after the options
> specified with -mcpu and can result in using surprising or
> conflicting options for a particular test.
>
> We need a way to skip a test if the options needed to compile
> that test are not compatible with current multilib options.
>
I think this is all true as stated. Just to make sure we
are on the same page. The specific boards (or simulators)
I am using to run the tests require specific CPU model
options. Those may conflict with the specific -mcpu/-march
required by a test.
> This could get ugly, so I'd prefer to find a way to do the
> necessary checks outside of the test itself, in a new directive.
> If that sounds workable I'll look into it.
>
Not knowing the internal details of the test harness, I
would make an ignorant guess that the command line
should be checked before it is executed. If it has multiple
-mcpu/-march options and they were not all the same, the
test should be skipped.
Is that kind of the logic we need even if the implementation
is way off?
Thanks.
--joel
> Janis
>
>
>> Janis Johnson wrote:
>>
>>> On Fri, 2008-03-14 at 10:21 -0700, Janis Johnson wrote:
>>>
>>>
>>>> On Fri, 2008-03-14 at 10:18 -0500, Joel Sherrill wrote:
>>>>
>>>>
>>>>
>>>>> /* { dg-skip-if "" { *-*-* } { "-mcpu=405" } { "-mcpu=" } } */
>>>>>
>>>>> I think this is doing what we want it to. It looks like it results
>>>>> the tests getting run when -mcpu=405 and excluded when
>>>>> -mcpu=603e is set on the board cflags.
>>>>>
>>>>>
>>>> The test directives are documented in the internals manual. From
>>>> sourcebuild.texi:
>>>>
>>>> @item @{ dg-skip-if @var{comment} @{ @var{selector} @}
>>>> @{ @var{include-opts} @} @{ @var{exclude-opts} @} @}
>>>> Skip the test if the test system is included in @var{selector} and if
>>>> each of the options in @var{include-opts} is in the set of options with
>>>> which the test would be compiled and if none of the options in
>>>> @var{exclude-opts} is in the set of options with which the test would be
>>>> compiled.
>>>>
>>>> The directive above says to skip the test on any target when
>>>> "-mcpu=450" is used and "-mcpu=" is not used. You'd actually
>>>> want "-mcpu=*", since "-mcpu=" isn't a full option, but then
>>>> the test will never be skipped whenever -mcpu=* is used.
>>>>
>>>> Proc check_conditional_xfail from framework.exp in DejaGnu
>>>> processes the lists of included and excluded option and with
>>>> "--verbose --verbose" in RUNTESTFLAGS will print messages to
>>>> the test log (e.g. obj_dir/gcc/testsuite/gcc/gcc.log) about
>>>> its progress.
>>>>
>>>> I think that dg-skip-if won't do what you need and you'll need
>>>> to add effective-target keywords.
>>>>
>>>>
>>> On the other hand, to run a test for -mcpu=450 but no other -mcpu
>>> option, this very ugly directive works (pattern matching is done
>>> with globs):
>>>
>>> /* { dg-skip-if "" { *-*-* } { "" } { "-mcpu=[0-35-9][0-46-9][1-9]*" } } */
>>>
>>> That kind of thing could get ugly very quickly if there are
>>> multiple cpus that would work.
>>>
>>>
>>>
>
>
--
Joel Sherrill, Ph.D. Director of Research & Development
joel.sherrill@OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the Gcc
mailing list