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: [PATCH][testsuite] Add dg-require-stack-check


On 10 July 2017 at 10:01, Christophe Lyon <christophe.lyon@linaro.org> wrote:
> Hi,
>
>
> On 6 July 2017 at 06:50, Jeff Law <law@redhat.com> wrote:
>> On 07/04/2017 02:50 AM, Christophe Lyon wrote:
>>> On 3 July 2017 at 17:30, Jeff Law <law@redhat.com> wrote:
>>>> On 07/03/2017 09:00 AM, Christophe Lyon wrote:
>>>>> Hi,
>>>>>
>>>>> This is a follow-up to
>>>>> https://gcc.gnu.org/ml/gcc-patches/2017-06/msg01791.html
>>>>>
>>>>> This patch adds dg-require-stack-check and updates the tests that use
>>>>> dg-options "-fstack-check" to avoid failures on configurations that to
>>>>> not support it.
>>>>>
>>>>> I merely copied what we currently do to check if visibility flags are
>>>>> supported, and cross-tested on aarch64 and arm targets with the
>>>>> results I expected.
>>>>>
>>>>> This means that my testing does not cover the changes I propose for
>>>>> i386 and gnat.
>>>>>
>>>>> Is it OK nonetheless?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Christophe
>>>>>
>>>>>
>>>>> stack-check-et.chlog.txt
>>>>>
>>>>>
>>>>> 2017-07-03  Christophe Lyon  <christophe.lyon@linaro.org>
>>>>>
>>>>>       * lib/target-supports-dg.exp (dg-require-stack-check): New.
>>>>>       * lib/target-supports.exp (check_stack_check_available): New.
>>>>>       * g++.dg/other/i386-9.C: Add dg-require-stack-check.
>>>>>       * gcc.c-torture/compile/stack-check-1.c: Likewise.
>>>>>       * gcc.dg/graphite/run-id-pr47653.c: Likewise.
>>>>>       * gcc.dg/pr47443.c: Likewise.
>>>>>       * gcc.dg/pr48134.c: Likewise.
>>>>>       * gcc.dg/pr70017.c: Likewise.
>>>>>       * gcc.target/aarch64/stack-checking.c: Likewise.
>>>>>       * gcc.target/arm/stack-checking.c: Likewise.
>>>>>       * gcc.target/i386/pr48723.c: Likewise.
>>>>>       * gcc.target/i386/pr55672.c: Likewise.
>>>>>       * gcc.target/i386/pr67265-2.c: Likewise.
>>>>>       * gcc.target/i386/pr67265.c: Likewise.
>>>>>       * gnat.dg/opt49.adb: Likewise.
>>>>>       * gnat.dg/stack_check1.adb: Likewise.
>>>>>       * gnat.dg/stack_check2.adb: Likewise.
>>>>>       * gnat.dg/stack_check3.adb: Likewise.
>>>> ACK once you address Rainer's comments.  I've got further stack-check
>>>> tests in the queue which I'll update once your change goes in.
>>>>
>>>> jeff
>>> Here is an updated version, which adds documentation for dg-require-stack-check.
>>>
>>> I also ran make-check on and x86_64 with ada enabled and checked the logs:
>>> the updated i386/* and gnat.dg* tests all pass, and are preceded by
>>> the compilation
>>> of the "stack_check" sample.
>>>
>>> OK?
>>>
>>> Thanks,
>>>
>>> Christophe
>>>
>>>
>>> stack-check-et.chlog.txt
>>>
>>>
>>> 2017-07-04  Christophe Lyon  <christophe.lyon@linaro.org>
>>>
>>>       gcc/
>>>       * doc/sourcebuild.texi (Test Directives, Variants of
>>>       dg-require-support): Add documentation for dg-require-stack-check.
>>>
>>>       gcc/testsuite/
>>>       * lib/target-supports-dg.exp (dg-require-stack-check): New.
>>>       * lib/target-supports.exp (check_stack_check_available): New.
>>>       * g++.dg/other/i386-9.C: Add dg-require-stack-check.
>>>       * gcc.c-torture/compile/stack-check-1.c: Likewise.
>>>       * gcc.dg/graphite/run-id-pr47653.c: Likewise.
>>>       * gcc.dg/pr47443.c: Likewise.
>>>       * gcc.dg/pr48134.c: Likewise.
>>>       * gcc.dg/pr70017.c: Likewise.
>>>       * gcc.target/aarch64/stack-checking.c: Likewise.
>>>       * gcc.target/arm/stack-checking.c: Likewise.
>>>       * gcc.target/i386/pr48723.c: Likewise.
>>>       * gcc.target/i386/pr55672.c: Likewise.
>>>       * gcc.target/i386/pr67265-2.c: Likewise.
>>>       * gcc.target/i386/pr67265.c: Likewise.
>>>       * gnat.dg/opt49.adb: Likewise.
>>>       * gnat.dg/stack_check1.adb: Likewise.
>>>       * gnat.dg/stack_check2.adb: Likewise.
>>>       * gnat.dg/stack_check3.adb: Likewise.
>> OK for the trunk.  Thanks for doing this!
>>
>
> I've committed this as r250013.
>
> Since then, I've noticed that pr48134 randomly fails.
>
> According to gcc.log, this seems related the order wrt pr47443.
> pr48134 uses -fstack-check=specific, while pr47443 uses -fstack-check=generic.
>
> When pr47443 appears before pr48134 in gcc.log, the latter fails,
> otherwise it is unsupported.
>
> Looking at gcc.log, it seems that dg-require-stack-check is not always called.
> Is there some caching in dejagnu I'm not aware of, that would ignore
> the value of the
> parameter (assuming that dg-require-stack-check "specific" and
> dg-require-stack-check "generic" return the same value?)
>
> Am I missing anything obvious?
>

It turns out I was... check_no_compiler_messages actually caches the
results using the testcase name, so using "stack_check" was insufficient.

The attached patch uses "stack_check_$stack_kind" instead, to make it
unique per fstack-check option.

OK?

Thanks,

Christophe

> Thanks,
>
> Christophe
>
>
>> Jeff

Attachment: stack-check-fix-testsuite.chlog.txt
Description: Text document

Attachment: stack-check-fix-testsuite.patch.txt
Description: Text document


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