Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-17 Thread Frank Scheiner

On 17.06.24 20:53, Jonathan Wakely wrote:

On Mon, 17 Jun 2024 at 19:03, Joseph Myers  wrote:


On Fri, 14 Jun 2024, Jonathan Wakely wrote:


Both, ideally. The libstdc++ test should definitely be fixed because
it fails with released versions of glibc already in the wild. But
glibc should also be fixed because it's a standards conformance issue.


The __ctx macro used in various sys/ucontext.h headers prepends __ in
standards conformance modes (the point being to avoid breaking the API
outside such modes when we fixed the namespace issues).

#ifdef __USE_MISC
# define __ctx(fld) fld
#else
# define __ctx(fld) __ ## fld
#endif

(bits/sigcontext.h didn't get any such fixes as it's not included at all
in standards conformance modes, only if __USE_MISC.)


I see, thanks. So it's not a problem in C, only in C++ due to G++
defining _GNU_SOURCE.

Let's just change the libstdc++ tests then.


Great, I did test that patched in the same way as in [1] on Friday. It
makes the three failing tests pass:

```
# make check-target-libstdc++-v3
RUNTESTFLAGS="conformance.exp=17_intro/names*\ experimental/names.cc"

Test run by root on Fri Jun 14 16:04:26 2024
Native configuration is ia64-t2-linux-gnu

=== libstdc++ tests ===

Schedule of variations:
unix

Running target unix
Running
/dev/shm/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
...
PASS: 17_intro/names.cc  -std=gnu++17 (test for excess errors)
PASS: 17_intro/names_pstl.cc  -std=gnu++17 (test for excess errors)
PASS: experimental/names.cc  -std=gnu++17 (test for excess errors)

=== libstdc++ Summary ===

# of expected passes3
```

[1]:
https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=cf5f7791056b3ed993bc8024be767a86157514a9

You most likely want the workaround as separate patch on this list, as
the failures were happening for both the non-LRA and LRA case, right?

Cheers,
Frank


Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-17 Thread Jonathan Wakely
On Mon, 17 Jun 2024 at 19:03, Joseph Myers  wrote:
>
> On Fri, 14 Jun 2024, Jonathan Wakely wrote:
>
> > Both, ideally. The libstdc++ test should definitely be fixed because
> > it fails with released versions of glibc already in the wild. But
> > glibc should also be fixed because it's a standards conformance issue.
>
> The __ctx macro used in various sys/ucontext.h headers prepends __ in
> standards conformance modes (the point being to avoid breaking the API
> outside such modes when we fixed the namespace issues).
>
> #ifdef __USE_MISC
> # define __ctx(fld) fld
> #else
> # define __ctx(fld) __ ## fld
> #endif
>
> (bits/sigcontext.h didn't get any such fixes as it's not included at all
> in standards conformance modes, only if __USE_MISC.)

I see, thanks. So it's not a problem in C, only in C++ due to G++
defining _GNU_SOURCE.

Let's just change the libstdc++ tests then.



Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-17 Thread Joseph Myers
On Fri, 14 Jun 2024, Jonathan Wakely wrote:

> Both, ideally. The libstdc++ test should definitely be fixed because
> it fails with released versions of glibc already in the wild. But
> glibc should also be fixed because it's a standards conformance issue.

The __ctx macro used in various sys/ucontext.h headers prepends __ in 
standards conformance modes (the point being to avoid breaking the API 
outside such modes when we fixed the namespace issues).

#ifdef __USE_MISC
# define __ctx(fld) fld
#else
# define __ctx(fld) __ ## fld
#endif

(bits/sigcontext.h didn't get any such fixes as it's not included at all 
in standards conformance modes, only if __USE_MISC.)

-- 
Joseph S. Myers
josmy...@redhat.com



Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-14 Thread Jonathan Wakely
On Fri, 14 Jun 2024 at 14:07, Frank Scheiner  wrote:
>
> On 14.06.24 14:53, Jonathan Wakely wrote:
> > On Fri, 14 Jun 2024 at 12:07, Frank Scheiner  wrote:
> >> ...point to two headers which are part of glibc 2.39 (w/ia64 support
> >> re-added):
> >>
> >> * /usr/include/bits/sigcontext.h:32-38:
> >> ```
> >> 32 struct __ia64_fpreg
> >> 33   {
> >> 34 union
> >> 35   {
> >> 36 unsigned long bits[2];
> >> 37   } u;
> >> 38   } __attribute__ ((__aligned__ (16)));
> >> ```
> >>
> >> * /usr/include/sys/ucontext.h:39-45:
> >> ```
> >>39 struct __ia64_fpreg_mcontext
> >>40   {
> >>41 union
> >>42   {
> >>43 unsigned long __ctx(bits)[2];
> >>44   } __ctx(u);
> >>45   } __attribute__ ((__aligned__ (16)));
> >> ```
> >
> > This is an ia64-specific glibc bug, because it means the following
> > valid C program is rejected:
> >
> > #define _GNU_SOURCE
> > #define bits 111
> > #define u no u
> > #include 
> > int main() { }
>
> Ok, I see. Should this then be "worked around" like in [1] with
> something like:
>
> ```
> #if defined (__linux__) && defined (__ia64__)
> //  defines __ia64_fpreg_mcontext::u
> #undef u
> #endif
> ```
>
> ...in `libstdc++-v3/testsuite/17_intro/names.cc` or should we fix it in
> glibc instead?

Both, ideally. The libstdc++ test should definitely be fixed because
it fails with released versions of glibc already in the wild. But
glibc should also be fixed because it's a standards conformance issue.


>
> [1]:
> https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=cf5f7791056b3ed993bc8024be767a86157514a9
>
> Cheers,
> Frank
>



Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-14 Thread Frank Scheiner

On 14.06.24 14:53, Jonathan Wakely wrote:

On Fri, 14 Jun 2024 at 12:07, Frank Scheiner  wrote:

...point to two headers which are part of glibc 2.39 (w/ia64 support
re-added):

* /usr/include/bits/sigcontext.h:32-38:
```
32 struct __ia64_fpreg
33   {
34 union
35   {
36 unsigned long bits[2];
37   } u;
38   } __attribute__ ((__aligned__ (16)));
```

* /usr/include/sys/ucontext.h:39-45:
```
   39 struct __ia64_fpreg_mcontext
   40   {
   41 union
   42   {
   43 unsigned long __ctx(bits)[2];
   44   } __ctx(u);
   45   } __attribute__ ((__aligned__ (16)));
```


This is an ia64-specific glibc bug, because it means the following
valid C program is rejected:

#define _GNU_SOURCE
#define bits 111
#define u no u
#include 
int main() { }


Ok, I see. Should this then be "worked around" like in [1] with
something like:

```
#if defined (__linux__) && defined (__ia64__)
//  defines __ia64_fpreg_mcontext::u
#undef u
#endif
```

...in `libstdc++-v3/testsuite/17_intro/names.cc` or should we fix it in
glibc instead?

[1]:
https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=cf5f7791056b3ed993bc8024be767a86157514a9

Cheers,
Frank


Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-14 Thread Jonathan Wakely
On Fri, 14 Jun 2024 at 12:07, Frank Scheiner  wrote:
>
> Dear Jonathan, Jeff,
>
> On 13.06.24 12:33, Jonathan Wakely wrote:
> > On Wed, 12 Jun 2024 at 22:00, Frank Scheiner  wrote:
> >> Ok, I posted the results as created by contrib/test_summary now:
> >>
> >> 1. non-LRA version on [1]
> >>
> >> 2. LRA version on [2]
> >>
> >> [1]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817267.html
> >>
> >> [2]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817268.html
> >
> > Thanks!
> >
> > These ones are probably due to non-reserved names in glibc or kernel 
> > headers:
> >
> > FAIL: 17_intro/names.cc  -std=gnu++17 (test for excess errors)
> > FAIL: 17_intro/names_pstl.cc  -std=gnu++17 (test for excess errors)
> > FAIL: experimental/names.cc  -std=gnu++17 (test for excess errors)
> >
> > The errors for all three are probably the same and should be
> > decipherable from libstdc++.log which will show which names defined as
> > macros in names.cc are clashing with names in system headers.
>
> Thanks for the hints. I looked into the log now and searched for the
> respective tests. And the log excerpts for all three failing tests (also
> attached with more context):
>
> ```
> FAIL: 17_intro/names.cc  -std=gnu++17 (test for excess errors)
> Excess errors:
> /usr/include/bits/sigcontext.h:37: error: expected unqualified-id before
> ';' token
> /usr/include/bits/sigcontext.h:37: error: expected ')' before ';' token
> /usr/include/sys/ucontext.h:44: error: expected unqualified-id before
> ';' token
> /usr/include/sys/ucontext.h:44: error: expected ')' before ';' token
> ```
>
> ...point to two headers which are part of glibc 2.39 (w/ia64 support
> re-added):
>
> * /usr/include/bits/sigcontext.h:32-38:
> ```
> 32 struct __ia64_fpreg
> 33   {
> 34 union
> 35   {
> 36 unsigned long bits[2];
> 37   } u;
> 38   } __attribute__ ((__aligned__ (16)));
> ```
>
> * /usr/include/sys/ucontext.h:39-45:
> ```
>   39 struct __ia64_fpreg_mcontext
>   40   {
>   41 union
>   42   {
>   43 unsigned long __ctx(bits)[2];
>   44   } __ctx(u);
>   45   } __attribute__ ((__aligned__ (16)));
> ```

This is an ia64-specific glibc bug, because it means the following
valid C program is rejected:

#define _GNU_SOURCE
#define bits 111
#define u no u
#include 
int main() { }



Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-14 Thread Frank Scheiner

Dear Jonathan, Jeff,

On 13.06.24 12:33, Jonathan Wakely wrote:

On Wed, 12 Jun 2024 at 22:00, Frank Scheiner  wrote:

Ok, I posted the results as created by contrib/test_summary now:

1. non-LRA version on [1]

2. LRA version on [2]

[1]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817267.html

[2]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817268.html


Thanks!

These ones are probably due to non-reserved names in glibc or kernel headers:

FAIL: 17_intro/names.cc  -std=gnu++17 (test for excess errors)
FAIL: 17_intro/names_pstl.cc  -std=gnu++17 (test for excess errors)
FAIL: experimental/names.cc  -std=gnu++17 (test for excess errors)

The errors for all three are probably the same and should be
decipherable from libstdc++.log which will show which names defined as
macros in names.cc are clashing with names in system headers.


Thanks for the hints. I looked into the log now and searched for the
respective tests. And the log excerpts for all three failing tests (also
attached with more context):

```
FAIL: 17_intro/names.cc  -std=gnu++17 (test for excess errors)
Excess errors:
/usr/include/bits/sigcontext.h:37: error: expected unqualified-id before
';' token
/usr/include/bits/sigcontext.h:37: error: expected ')' before ';' token
/usr/include/sys/ucontext.h:44: error: expected unqualified-id before
';' token
/usr/include/sys/ucontext.h:44: error: expected ')' before ';' token
```

...point to two headers which are part of glibc 2.39 (w/ia64 support
re-added):

* /usr/include/bits/sigcontext.h:32-38:
```
32 struct __ia64_fpreg
33   {
34 union
35   {
36 unsigned long bits[2];
37   } u;
38   } __attribute__ ((__aligned__ (16)));
```

* /usr/include/sys/ucontext.h:39-45:
```
 39 struct __ia64_fpreg_mcontext
 40   {
 41 union
 42   {
 43 unsigned long __ctx(bits)[2];
 44   } __ctx(u);
 45   } __attribute__ ((__aligned__ (16)));
```

Cheers,
Frank
# Log excerpts for failing tests in libstdc++v3 for 5.0.0 20240528 (experimental) [master revision 236116068151bbc72aaaf53d0f223fe06f7e3bac] (GCC) w/LRA #

## FAIL: 17_intro/names.cc  -std=gnu++17 (test for excess errors) ##

```
extra_tool_flags are:  -std=gnu++17   -D__GLIBCXX__=
Executing on host: /dev/shm/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/gcc.build.lnx/./gcc/xg++ -shared-libgcc -B/dev/shm/gcc-15-lra/src.gcc.ia64-to
olchain-3.240529.123346.921189/gcc/gcc.build.lnx/./gcc -nostdinc++ -L/dev/shm/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/gcc.build.lnx/ia64-t2-linux
-gnu/libstdc++-v3/src -L/dev/shm/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/gcc.build.lnx/ia64-t2-linux-gnu/libstdc++-v3/src/.libs -L/dev/shm/gcc-15
-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/gcc.build.lnx/ia64-t2-linux-gnu/libstdc++-v3/libsupc++/.libs -B/usr/ia64-t2-linux-gnu/bin/ -B/usr/ia64-t2-linux
-gnu/lib/ -isystem /usr/ia64-t2-linux-gnu/include -isystem /usr/ia64-t2-linux-gnu/sys-include -fchecking=1 -B/usr/src/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.12334
6.921189/gcc/gcc.build.lnx/ia64-t2-linux-gnu/./libstdc++-v3/src/.libs -fmessage-length=0 -fno-show-column -ffunction-sections -fdata-sections -g -O2 -fPIC -D_GNU_SOUR
CE -DLOCALEDIR="." -nostdinc++ -I/dev/shm/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/gcc.build.lnx/ia64-t2-linux-gnu/libstdc++-v3/include/ia64-t2-li
nux-gnu -I/dev/shm/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/gcc.build.lnx/ia64-t2-linux-gnu/libstdc++-v3/include -I/dev/shm/gcc-15-lra/src.gcc.ia6
4-toolchain-3.240529.123346.921189/gcc/libstdc++-v3/libsupc++ -I/dev/shm/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/libstdc++-v3/include/backward -I
/dev/shm/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/libstdc++-v3/testsuite/util  /usr/src/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/g
cc/libstdc++-v3/testsuite/17_intro/names.cc-std=gnu++17   -D__GLIBCXX__= -fdiagnostics-plain-output -S -o names.s(timeout = 360)
spawn -ignore SIGHUP /dev/shm/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/gcc.build.lnx/./gcc/xg++ -shared-libgcc -B/dev/shm/gcc-15-lra/src.gcc.ia64-
toolchain-3.240529.123346.921189/gcc/gcc.build.lnx/./gcc -nostdinc++ -L/dev/shm/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/gcc.build.lnx/ia64-t2-linux-gnu/libstdc++-v3/src -L/dev/shm/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/gcc.build.lnx/ia64-t2-linux-gnu/libstdc++-v3/src/.libs -L/dev/shm/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/gcc.build.lnx/ia64-t2-linux-gnu/libstdc++-v3/libsupc++/.libs -B/usr/ia64-t2-linux-gnu/bin/ -B/usr/ia64-t2-linux-gnu/lib/ -isystem /usr/ia64-t2-linux-gnu/include -isystem /usr/ia64-t2-linux-gnu/sys-include -fchecking=1 -B/usr/src/gcc-15-lra/src.gcc.ia64-toolchain-3.240529.123346.921189/gcc/gcc.build.lnx/ia64-t2-linux-gnu/./libstdc++-v3/src/.libs -fmessage-length=0 -fno-show-column -ffunction-se

Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-13 Thread Jonathan Wakely
On Thu, 13 Jun 2024 at 15:16, Jonathan Wakely  wrote:
>
> On Thu, 13 Jun 2024 at 15:11, Jeff Law  wrote:
> >
> >
> >
> > On 6/13/24 4:33 AM, Jonathan Wakely wrote:
> > > On Wed, 12 Jun 2024 at 22:00, Frank Scheiner  
> > > wrote:
> > >>
> > >> Hi Jonathan, Richard,
> > >>
> > >> On 12.06.24 20:54, Jonathan Wakely wrote:
> > >>> On 12/06/24 16:09 +0200, Frank Scheiner wrote:
> >  Dear Richard,
> > 
> >  On 12.06.24 13:01, Richard Biener wrote:
> > > [...]
> > > I can find two gcc-testresult postings, one appearantly with LRA
> > > and one without?  Both from May:
> > >
> > > https://sourceware.org/pipermail/gcc-testresults/2024-May/816422.html
> > > https://sourceware.org/pipermail/gcc-testresults/2024-May/816346.html
> > >
> > > somehow for example libstdc++ summaries were not merged, it might
> > > be you do not have recent python installed on the system?  Or you
> > > didn't use contrib/test_summary to create those mails.
> > 
> >  No, I did not use contrib/test_summary. But I still have tarballs of
> >  both testsuite runs, so could still produce these summaries - I hope?
> > >>>
> > >>> It looks like the results at
> > >>> https://gcc.gnu.org/pipermail/gcc-testresults/2024-May/816422.html are
> > >>> just what's printed on standard out, including output from 'make -j4'
> > >>> so not combined into one set of results.
> > >>
> > >> That's what it is, yes.
> > >>
> > >>> It would certainly be better to either get the results from the .sum
> > >>> files, or just use the contrib/test_summary script to do that for you.
> > >>
> > >> Ok, I posted the results as created by contrib/test_summary now:
> > >>
> > >> 1. non-LRA version on [1]
> > >>
> > >> 2. LRA version on [2]
> > >>
> > >> [1]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817267.html
> > >>
> > >> [2]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817268.html
> > >
> > > Thanks!
> > >
> > > These ones are probably due to non-reserved names in glibc or kernel 
> > > headers:
> > >
> > > FAIL: 17_intro/names.cc  -std=gnu++17 (test for excess errors)
> > > FAIL: 17_intro/names_pstl.cc  -std=gnu++17 (test for excess errors)
> > > FAIL: experimental/names.cc  -std=gnu++17 (test for excess errors)
> > >
> > > The errors for all three are probably the same and should be
> > > decipherable from libstdc++.log which will show which names defined as
> > > macros in names.cc are clashing with names in system headers.
> > And wouldn't failure of these imply that the headers are either ancient
> > with some kind of pollution or that there's a ia64 specific goof in the
> > headers?
>
> Yes, indeed. It probably means some ia64-specific structures in kernel
> headers use non-reserved names like "next" or "ptr" or something,
> instead of __next or __ptr.
>
> >  These tests work on the other linux targets AFAIK.
>
> Most of them, yes. I think Jakub noticed some failures on s390x linux
> recently, due to bad names in s390x-specific structs in the kernel
> headers.

Ah yes, see r14-10076-gcf5f7791056b3e for details - the commit message
has lots of info. There were problems in kernel headers and in
s390x-specific parts of glibc.



Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-13 Thread Jonathan Wakely
On Thu, 13 Jun 2024 at 15:11, Jeff Law  wrote:
>
>
>
> On 6/13/24 4:33 AM, Jonathan Wakely wrote:
> > On Wed, 12 Jun 2024 at 22:00, Frank Scheiner  wrote:
> >>
> >> Hi Jonathan, Richard,
> >>
> >> On 12.06.24 20:54, Jonathan Wakely wrote:
> >>> On 12/06/24 16:09 +0200, Frank Scheiner wrote:
>  Dear Richard,
> 
>  On 12.06.24 13:01, Richard Biener wrote:
> > [...]
> > I can find two gcc-testresult postings, one appearantly with LRA
> > and one without?  Both from May:
> >
> > https://sourceware.org/pipermail/gcc-testresults/2024-May/816422.html
> > https://sourceware.org/pipermail/gcc-testresults/2024-May/816346.html
> >
> > somehow for example libstdc++ summaries were not merged, it might
> > be you do not have recent python installed on the system?  Or you
> > didn't use contrib/test_summary to create those mails.
> 
>  No, I did not use contrib/test_summary. But I still have tarballs of
>  both testsuite runs, so could still produce these summaries - I hope?
> >>>
> >>> It looks like the results at
> >>> https://gcc.gnu.org/pipermail/gcc-testresults/2024-May/816422.html are
> >>> just what's printed on standard out, including output from 'make -j4'
> >>> so not combined into one set of results.
> >>
> >> That's what it is, yes.
> >>
> >>> It would certainly be better to either get the results from the .sum
> >>> files, or just use the contrib/test_summary script to do that for you.
> >>
> >> Ok, I posted the results as created by contrib/test_summary now:
> >>
> >> 1. non-LRA version on [1]
> >>
> >> 2. LRA version on [2]
> >>
> >> [1]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817267.html
> >>
> >> [2]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817268.html
> >
> > Thanks!
> >
> > These ones are probably due to non-reserved names in glibc or kernel 
> > headers:
> >
> > FAIL: 17_intro/names.cc  -std=gnu++17 (test for excess errors)
> > FAIL: 17_intro/names_pstl.cc  -std=gnu++17 (test for excess errors)
> > FAIL: experimental/names.cc  -std=gnu++17 (test for excess errors)
> >
> > The errors for all three are probably the same and should be
> > decipherable from libstdc++.log which will show which names defined as
> > macros in names.cc are clashing with names in system headers.
> And wouldn't failure of these imply that the headers are either ancient
> with some kind of pollution or that there's a ia64 specific goof in the
> headers?

Yes, indeed. It probably means some ia64-specific structures in kernel
headers use non-reserved names like "next" or "ptr" or something,
instead of __next or __ptr.

>  These tests work on the other linux targets AFAIK.

Most of them, yes. I think Jakub noticed some failures on s390x linux
recently, due to bad names in s390x-specific structs in the kernel
headers.



Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-13 Thread Jeff Law




On 6/13/24 4:33 AM, Jonathan Wakely wrote:

On Wed, 12 Jun 2024 at 22:00, Frank Scheiner  wrote:


Hi Jonathan, Richard,

On 12.06.24 20:54, Jonathan Wakely wrote:

On 12/06/24 16:09 +0200, Frank Scheiner wrote:

Dear Richard,

On 12.06.24 13:01, Richard Biener wrote:

[...]
I can find two gcc-testresult postings, one appearantly with LRA
and one without?  Both from May:

https://sourceware.org/pipermail/gcc-testresults/2024-May/816422.html
https://sourceware.org/pipermail/gcc-testresults/2024-May/816346.html

somehow for example libstdc++ summaries were not merged, it might
be you do not have recent python installed on the system?  Or you
didn't use contrib/test_summary to create those mails.


No, I did not use contrib/test_summary. But I still have tarballs of
both testsuite runs, so could still produce these summaries - I hope?


It looks like the results at
https://gcc.gnu.org/pipermail/gcc-testresults/2024-May/816422.html are
just what's printed on standard out, including output from 'make -j4'
so not combined into one set of results.


That's what it is, yes.


It would certainly be better to either get the results from the .sum
files, or just use the contrib/test_summary script to do that for you.


Ok, I posted the results as created by contrib/test_summary now:

1. non-LRA version on [1]

2. LRA version on [2]

[1]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817267.html

[2]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817268.html


Thanks!

These ones are probably due to non-reserved names in glibc or kernel headers:

FAIL: 17_intro/names.cc  -std=gnu++17 (test for excess errors)
FAIL: 17_intro/names_pstl.cc  -std=gnu++17 (test for excess errors)
FAIL: experimental/names.cc  -std=gnu++17 (test for excess errors)

The errors for all three are probably the same and should be
decipherable from libstdc++.log which will show which names defined as
macros in names.cc are clashing with names in system headers.
And wouldn't failure of these imply that the headers are either ancient 
with some kind of pollution or that there's a ia64 specific goof in the 
headers?  These tests work on the other linux targets AFAIK.


jeff



Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-13 Thread Jonathan Wakely
On Wed, 12 Jun 2024 at 22:00, Frank Scheiner  wrote:
>
> Hi Jonathan, Richard,
>
> On 12.06.24 20:54, Jonathan Wakely wrote:
> > On 12/06/24 16:09 +0200, Frank Scheiner wrote:
> >> Dear Richard,
> >>
> >> On 12.06.24 13:01, Richard Biener wrote:
> >>> [...]
> >>> I can find two gcc-testresult postings, one appearantly with LRA
> >>> and one without?  Both from May:
> >>>
> >>> https://sourceware.org/pipermail/gcc-testresults/2024-May/816422.html
> >>> https://sourceware.org/pipermail/gcc-testresults/2024-May/816346.html
> >>>
> >>> somehow for example libstdc++ summaries were not merged, it might
> >>> be you do not have recent python installed on the system?  Or you
> >>> didn't use contrib/test_summary to create those mails.
> >>
> >> No, I did not use contrib/test_summary. But I still have tarballs of
> >> both testsuite runs, so could still produce these summaries - I hope?
> >
> > It looks like the results at
> > https://gcc.gnu.org/pipermail/gcc-testresults/2024-May/816422.html are
> > just what's printed on standard out, including output from 'make -j4'
> > so not combined into one set of results.
>
> That's what it is, yes.
>
> > It would certainly be better to either get the results from the .sum
> > files, or just use the contrib/test_summary script to do that for you.
>
> Ok, I posted the results as created by contrib/test_summary now:
>
> 1. non-LRA version on [1]
>
> 2. LRA version on [2]
>
> [1]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817267.html
>
> [2]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817268.html

Thanks!

These ones are probably due to non-reserved names in glibc or kernel headers:

FAIL: 17_intro/names.cc  -std=gnu++17 (test for excess errors)
FAIL: 17_intro/names_pstl.cc  -std=gnu++17 (test for excess errors)
FAIL: experimental/names.cc  -std=gnu++17 (test for excess errors)

The errors for all three are probably the same and should be
decipherable from libstdc++.log which will show which names defined as
macros in names.cc are clashing with names in system headers.


>
> The difference 2 compared to 1 is attached.
>
> >> Do I need to run this on the host that did the testing or can I run it
> >> on my NFS server where the tarballs are actually located, too?
> >
> > I don't think the script cares where it's run, it just looks at text
> > files which should work on any host.
>
> It looks like it worked fine. :-)
>
> Cheers,
> Frank
>



Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-13 Thread Richard Biener
On Wed, 12 Jun 2024, Frank Scheiner wrote:

> Dear Richard,
> 
> On 12.06.24 13:01, Richard Biener wrote:
> > [...]
> > I can find two gcc-testresult postings, one appearantly with LRA
> > and one without?  Both from May:
> >
> > https://sourceware.org/pipermail/gcc-testresults/2024-May/816422.html
> > https://sourceware.org/pipermail/gcc-testresults/2024-May/816346.html
> >
> > somehow for example libstdc++ summaries were not merged, it might
> > be you do not have recent python installed on the system?  Or you
> > didn't use contrib/test_summary to create those mails.
> 
> No, I did not use contrib/test_summary. But I still have tarballs of
> both testsuite runs, so could still produce these summaries - I hope?
> 
> Do I need to run this on the host that did the testing or can I run it
> on my NFS server where the tarballs are actually located, too?
> 
> Architectures are different though, the NFS server is 32-bit ARM.

GCC supports parallel checking just fine using 'make -k -jN check'
(it's important to add -k), the summaries and logs will be merged
at the end of the testsuite run via the contrib/dg-extract-results.py
script.  The test_summary script will not do such merging but only
gather FAILs and summaries from the individual sub-harness results
into a nice summary report.

Richard.

> Cheers,
> Frank
> 
> 

-- 
Richard Biener 
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)


Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-12 Thread Frank Scheiner

Hi Jonathan, Richard,

On 12.06.24 20:54, Jonathan Wakely wrote:

On 12/06/24 16:09 +0200, Frank Scheiner wrote:

Dear Richard,

On 12.06.24 13:01, Richard Biener wrote:

[...]
I can find two gcc-testresult postings, one appearantly with LRA
and one without?  Both from May:

https://sourceware.org/pipermail/gcc-testresults/2024-May/816422.html
https://sourceware.org/pipermail/gcc-testresults/2024-May/816346.html

somehow for example libstdc++ summaries were not merged, it might
be you do not have recent python installed on the system?  Or you
didn't use contrib/test_summary to create those mails.


No, I did not use contrib/test_summary. But I still have tarballs of
both testsuite runs, so could still produce these summaries - I hope?


It looks like the results at
https://gcc.gnu.org/pipermail/gcc-testresults/2024-May/816422.html are
just what's printed on standard out, including output from 'make -j4'
so not combined into one set of results.


That's what it is, yes.


It would certainly be better to either get the results from the .sum
files, or just use the contrib/test_summary script to do that for you.


Ok, I posted the results as created by contrib/test_summary now:

1. non-LRA version on [1]

2. LRA version on [2]

[1]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817267.html

[2]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-June/817268.html

The difference 2 compared to 1 is attached.


Do I need to run this on the host that did the testing or can I run it
on my NFS server where the tarballs are actually located, too?


I don't think the script cares where it's run, it just looks at text
files which should work on any host.


It looks like it worked fine. :-)

Cheers,
Frank
 
diff --git a/gcc-15-testsuite-summary.log b/gcc-15-lra-testsuite-summary.log
index b7acc04..558079a 100644
--- a/gcc-15-testsuite-summary.log
+++ b/gcc-15-lra-testsuite-summary.log
@@ -306,13 +306,12 @@ FAIL: gcc.dg/guality/csttest.c  -Og -DPREVENT_OPTIMIZATION  line 55 q == -(0x1ef
 FAIL: gcc.dg/guality/csttest.c  -Og -DPREVENT_OPTIMIZATION  line 55 r == -(0x1efULL << 50)
 XPASS: gcc.dg/guality/example.c   -O0  execution test
 XPASS: gcc.dg/guality/guality.c   -O0  execution test
-XPASS: gcc.dg/guality/guality.c   -O3 -g  -DPREVENT_OPTIMIZATION  execution test
 FAIL: gcc.dg/guality/inline-params-2.c   -O1  -DPREVENT_OPTIMIZATION  execution test
 FAIL: gcc.dg/guality/inline-params-2.c   -O2  -DPREVENT_OPTIMIZATION  execution test
+FAIL: gcc.dg/guality/inline-params-2.c   -O3 -g  -DPREVENT_OPTIMIZATION  execution test
 FAIL: gcc.dg/guality/inline-params-2.c   -Os  -DPREVENT_OPTIMIZATION  execution test
 FAIL: gcc.dg/guality/inline-params-2.c  -Og -DPREVENT_OPTIMIZATION  execution test
 FAIL: gcc.dg/guality/inline-params.c   -O1  -DPREVENT_OPTIMIZATION  execution test
-XPASS: gcc.dg/guality/inline-params.c   -O3 -g  -DPREVENT_OPTIMIZATION  execution test
 FAIL: gcc.dg/guality/inline-params.c  -Og -DPREVENT_OPTIMIZATION  execution test
 FAIL: gcc.dg/guality/ipa-sra-1.c   -O1  -DPREVENT_OPTIMIZATION  line 19 k == 3
 FAIL: gcc.dg/guality/ipa-sra-1.c   -O1  -DPREVENT_OPTIMIZATION  line 31 k == 3
@@ -434,6 +433,7 @@ FAIL: gcc.dg/guality/pr41447-1.c   -Os  -DPREVENT_OPTIMIZATION  execution test
 FAIL: gcc.dg/guality/pr41447-1.c  -Og -DPREVENT_OPTIMIZATION  execution test
 FAIL: gcc.dg/guality/pr41616-1.c   -O1  -DPREVENT_OPTIMIZATION  execution test
 FAIL: gcc.dg/guality/pr41616-1.c   -O2  -DPREVENT_OPTIMIZATION  execution test
+FAIL: gcc.dg/guality/pr41616-1.c   -O3 -g  -DPREVENT_OPTIMIZATION  execution test
 FAIL: gcc.dg/guality/pr41616-1.c  -Og -DPREVENT_OPTIMIZATION  execution test
 FAIL: gcc.dg/guality/pr43051-1.c   -Os  -DPREVENT_OPTIMIZATION  line 34 c == &a[0]
 FAIL: gcc.dg/guality/pr43077-1.c   -O0  line 19 vara == 1
@@ -798,10 +798,10 @@ FAIL: gcc.dg/tree-prof/crossmodule-indircall-1a.c compilation,  -fprofile-genera
 UNRESOLVED: gcc.dg/tree-prof/crossmodule-indircall-1a.c compilation,  -fprofile-use -D_PROFILE_USE
 UNRESOLVED: gcc.dg/tree-prof/crossmodule-indircall-1a.c execution,-fprofile-generate -D_PROFILE_GENERATE
 UNRESOLVED: gcc.dg/tree-prof/crossmodule-indircall-1a.c execution,-fprofile-use -D_PROFILE_USE
-FAIL: gcc.dg/tree-prof/pr77698.c compilation,  -fprofile-generate -D_PROFILE_GENERATE
-UNRESOLVED: gcc.dg/tree-prof/pr77698.c compilation,  -fprofile-use -D_PROFILE_USE
-UNRESOLVED: gcc.dg/tree-prof/pr77698.c execution,-fprofile-generate -D_PROFILE_GENERATE
-UNRESOLVED: gcc.dg/tree-prof/pr77698.c execution,-fprofile-use -D_PROFILE_USE
+FAIL: gcc.dg/tree-prof/pr47187.c compilation,  -fprofile-generate -D_PROFILE_GENERATE
+UNRESOLVED: gcc.dg/tree-prof/pr47187.c compilation,  -fprofile-use -D_PROFILE_USE
+UNRESOLVED: gcc.dg/tree-prof/pr47187.c execution,-fprofile-generate -D_PROFILE_GENERATE
+UNRESOLVED: gcc.dg/tree-prof/pr47187.c execution,-fprofile-use -D_PROFILE_USE
 FAIL: gcc.dg/tree-ssa/abs-4.c scan-tree-dump-times optimized "= -" 3
 FAIL: gcc.dg/tree-ssa/abs-4.c scan-

Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-12 Thread Jonathan Wakely

On 12/06/24 16:09 +0200, Frank Scheiner wrote:

Dear Richard,

On 12.06.24 13:01, Richard Biener wrote:

[...]
I can find two gcc-testresult postings, one appearantly with LRA
and one without?  Both from May:

https://sourceware.org/pipermail/gcc-testresults/2024-May/816422.html
https://sourceware.org/pipermail/gcc-testresults/2024-May/816346.html

somehow for example libstdc++ summaries were not merged, it might
be you do not have recent python installed on the system?  Or you
didn't use contrib/test_summary to create those mails.


No, I did not use contrib/test_summary. But I still have tarballs of
both testsuite runs, so could still produce these summaries - I hope?


It looks like the results at
https://gcc.gnu.org/pipermail/gcc-testresults/2024-May/816422.html are
just what's printed on standard out, including output from 'make -j4'
so not combined into one set of results.

It would certainly be better to either get the results from the .sum
files, or just use the contrib/test_summary script to do that for you.


Do I need to run this on the host that did the testing or can I run it
on my NFS server where the tarballs are actually located, too?


I don't think the script cares where it's run, it just looks at text
files which should work on any host.


Architectures are different though, the NFS server is 32-bit ARM.


Text is text.



Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-12 Thread Frank Scheiner

Dear Richard,

On 12.06.24 13:01, Richard Biener wrote:

[...]
I can find two gcc-testresult postings, one appearantly with LRA
and one without?  Both from May:

https://sourceware.org/pipermail/gcc-testresults/2024-May/816422.html
https://sourceware.org/pipermail/gcc-testresults/2024-May/816346.html

somehow for example libstdc++ summaries were not merged, it might
be you do not have recent python installed on the system?  Or you
didn't use contrib/test_summary to create those mails.


No, I did not use contrib/test_summary. But I still have tarballs of
both testsuite runs, so could still produce these summaries - I hope?

Do I need to run this on the host that did the testing or can I run it
on my NFS server where the tarballs are actually located, too?

Architectures are different though, the NFS server is 32-bit ARM.

Cheers,
Frank


Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-12 Thread Frank Scheiner

Hi all,

On 12.06.24 15:19, René Rebe wrote:

On Jun 12, 2024, at 15:00, Richard Biener  wrote:

On Wed, 12 Jun 2024, René Rebe wrote:

On Jun 12, 2024, at 13:01, Richard Biener  wrote:
On Wed, 12 Jun 2024, Rene Rebe wrote:

not sure how you exactly did this though?  I've never tried
testing of a canadian-cross tree - did you copy the whole build
tree over from the x86 to the ia64 machine?


IIRC the testsuite did not just work copying the canadian-cross.
I did run the testsuite from the cross-compiled gcc using a ssh
based dejagnu board config, but Frank also did fully bootstrap and
ran the testsuite natively.


Exactly, the results I posted are both based on natively bootstrapped 
GCC binaries (took ca. 5 hours each on my rx2800 i2). The post titles 
include the exact commit hash they are based on:


1. [ia64] Results for 15.0.0 20240528 (experimental) [master revision 
236116068151bbc72aaaf53d0f223fe06f7e3bac] (GCC) testsuite on 
ia64-t2-linux-gnu ([1])


2. [ia64] Results for 15.0.0 20240528 (experimental) [master revision 
236116068151bbc72aaaf53d0f223fe06f7e3bac] (GCC) w/LRA testsuite on 
ia64-t2-linux-gnu ([2])


[1]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-May/816346.html

[2]: https://gcc.gnu.org/pipermail/gcc-testresults/2024-May/816422.html

I tried to save time during the testsuite runs (it still took more than 
7 hours on my rx2800 i2 running in tmpfs) by manually running multiple 
testsuites in parallel in the following fashion:


```
gcc   | libstdc++
  |
  |
--|
g++   |
  |
  |
--|
gfortran  |
  |
  |
--|
libgomp   |---
  | libatomic
  |---
  | objc
```
... and also using multiple jobs per testsuite where it saved time (e.g. 
it does not for the libgomp testsuite). This is the reason that the 
output is somewhat split up.


[1] and [2] each also list the commands used to run the testsuites and 
timing data. For reference these were produced on a:


rx2800 i2 w/1 x Itanium 2 9320 running @1.33 GHz w/SMT enabled

Cheers,
Frank



Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-12 Thread René Rebe

On Jun 12, 2024, at 15:00, Richard Biener  wrote:
> 
> On Wed, 12 Jun 2024, René Rebe wrote:
> 
>> Hi,
>> 
>>> On Jun 12, 2024, at 13:01, Richard Biener  wrote:
>>> 
>>> On Wed, 12 Jun 2024, Rene Rebe wrote:
 
 gcc/
   * config/ia64/ia64.cc: Enable LRA for ia64.
   * config/ia64/ia64.md: Likewise.
   * config/ia64/predicates.md: Likewise.
>>> 
>>> That looks simple enough.  I cannot find any copyright assignment on
>>> file with the FSF so you probably want to contribute to GCC under
>>> the DCO (see https://gcc.gnu.org/dco.html), in that case please post
>>> patches with Signed-off-by: tags.
>> 
>> If it helps for the future, I can apply for copyright assignment, too.
> 
> It's not a requirement - you as contributor get the choice under
> which legal framework you contribute to GCC, for the DCO there's
> the formal requirement of Signed-off-by: tags.
> 
>>> For this patch please state how you tested it, I assume you
>>> bootstrapped GCC natively on ia64-linux and ran the testsuite.
>>> I can find two gcc-testresult postings, one appearantly with LRA
>>> and one without?  Both from May:
>>> 
>>> https://sourceware.org/pipermail/gcc-testresults/2024-May/816422.html
>>> https://sourceware.org/pipermail/gcc-testresults/2024-May/816346.html
>> 
>> Yes, that are the two I quoted in the patch cover letter.
>> 
>>  https://gcc.gnu.org/pipermail/gcc-patches/2024-June/654321.html
>> 
>>> somehow for example libstdc++ summaries were not merged, it might
>>> be you do not have recent python installed on the system?  Or you
>>> didn't use contrib/test_summary to create those mails.  It would be
>>> nice to see the difference between LRA and not LRA in the testresults,
>>> can you quote that?
>> 
>> We usually cross-compile gcc, but also ran natively for the testsuite.
>> Given the tests run quite long natively on the hardware we currently
>> have, I summed the results them up in the cover letter. I would assume
>> that shoudl be enough to include with a note the resulting kernel and
>> user-space world was booted and worked without issues?
> 
> I specifically wondered if bootstrap with LRA enabled succeeds.
> That needs either native or emulated hardware.  I think we consider
> ia64-linux a host platform and not only a cross compiler target.

With “also ran” I meant to say we did both, our T2 framework usually
boot-straps everything cross compiled, but also supports native in-system
compilation. Frank also manually natively bootstrapped gcc and ran the
testsuite natively on ia64.

>> If so, I’ll just resend with the additional information added.
> 
> For the LRA enablement patch the requirement is that patches should
> state how they were tested - usually you'll see sth like
> 
> Boostrapped and tested on x86_64-unknown-linux-gnu.
> 
> In your case it was
> 
> Cross-built from x86_64-linux(?) to ia64-linux, natively tested

OK - I include the details in v2.

> not sure how you exactly did this though?  I've never tried
> testing of a canadian-cross tree - did you copy the whole build
> tree over from the x86 to the ia64 machine?

IIRC the testsuite did not just work copying the canadian-cross.
I did run the testsuite from the cross-compiled gcc using a ssh
based dejagnu board config, but Frank also did fully bootstrap and
ran the testsuite natively.

Thanks,
René

> Thanks,
> Richard.
> 
>> Thank you so much,
>>  René
>> 
>>> Thanks,
>>> Richard.
>>> 
 ---
 gcc/config/ia64/ia64.cc   | 7 ++-
 gcc/config/ia64/ia64.md   | 4 ++--
 gcc/config/ia64/predicates.md | 2 +-
 3 files changed, 5 insertions(+), 8 deletions(-)
 
 diff --git a/gcc/config/ia64/ia64.cc b/gcc/config/ia64/ia64.cc
 index ac3d56073ac..d189bfb2cb4 100644
 --- a/gcc/config/ia64/ia64.cc
 +++ b/gcc/config/ia64/ia64.cc
 @@ -618,9 +618,6 @@ static const scoped_attribute_specs *const 
 ia64_attribute_table[] =
 #undef TARGET_LEGITIMATE_ADDRESS_P
 #define TARGET_LEGITIMATE_ADDRESS_P ia64_legitimate_address_p
 
 -#undef TARGET_LRA_P
 -#define TARGET_LRA_P hook_bool_void_false
 -
 #undef TARGET_CANNOT_FORCE_CONST_MEM
 #define TARGET_CANNOT_FORCE_CONST_MEM ia64_cannot_force_const_mem
 
 @@ -1329,7 +1326,7 @@ ia64_expand_move (rtx op0, rtx op1)
 {
  machine_mode mode = GET_MODE (op0);
 
 -  if (!reload_in_progress && !reload_completed && !ia64_move_ok (op0, 
 op1))
 +  if (!lra_in_progress && !reload_completed && !ia64_move_ok (op0, op1))
op1 = force_reg (mode, op1);
 
  if ((mode == Pmode || mode == ptr_mode) && symbolic_operand (op1, 
 VOIDmode))
 @@ -1776,7 +1773,7 @@ ia64_expand_movxf_movrf (machine_mode mode, rtx 
 operands[])
 }
}
 
 -  if (!reload_in_progress && !reload_completed)
 +  if (!lra_in_progress && !reload_completed)
{
  operands[1] = spill_xfmode_rfmode_operand (operands[1], 0, mode);
 
 diff --git a/gcc/c

Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-12 Thread Richard Biener
On Wed, 12 Jun 2024, René Rebe wrote:

> Hi,
> 
> > On Jun 12, 2024, at 13:01, Richard Biener  wrote:
> > 
> > On Wed, 12 Jun 2024, Rene Rebe wrote:
> >> 
> >> gcc/
> >>* config/ia64/ia64.cc: Enable LRA for ia64.
> >>* config/ia64/ia64.md: Likewise.
> >>* config/ia64/predicates.md: Likewise.
> > 
> > That looks simple enough.  I cannot find any copyright assignment on
> > file with the FSF so you probably want to contribute to GCC under
> > the DCO (see https://gcc.gnu.org/dco.html), in that case please post
> > patches with Signed-off-by: tags.
> 
> If it helps for the future, I can apply for copyright assignment, too.

It's not a requirement - you as contributor get the choice under
which legal framework you contribute to GCC, for the DCO there's
the formal requirement of Signed-off-by: tags.

> > For this patch please state how you tested it, I assume you
> > bootstrapped GCC natively on ia64-linux and ran the testsuite.
> > I can find two gcc-testresult postings, one appearantly with LRA
> > and one without?  Both from May:
> > 
> > https://sourceware.org/pipermail/gcc-testresults/2024-May/816422.html
> > https://sourceware.org/pipermail/gcc-testresults/2024-May/816346.html
> 
> Yes, that are the two I quoted in the patch cover letter.
> 
>   https://gcc.gnu.org/pipermail/gcc-patches/2024-June/654321.html
> 
> > somehow for example libstdc++ summaries were not merged, it might
> > be you do not have recent python installed on the system?  Or you
> > didn't use contrib/test_summary to create those mails.  It would be
> > nice to see the difference between LRA and not LRA in the testresults,
> > can you quote that?
> 
> We usually cross-compile gcc, but also ran natively for the testsuite.
> Given the tests run quite long natively on the hardware we currently
> have, I summed the results them up in the cover letter. I would assume
> that shoudl be enough to include with a note the resulting kernel and
> user-space world was booted and worked without issues?

I specifically wondered if bootstrap with LRA enabled succeeds.
That needs either native or emulated hardware.  I think we consider
ia64-linux a host platform and not only a cross compiler target.

> If so, I’ll just resend with the additional information added.

For the LRA enablement patch the requirement is that patches should
state how they were tested - usually you'll see sth like

Boostrapped and tested on x86_64-unknown-linux-gnu.

In your case it was

Cross-built from x86_64-linux(?) to ia64-linux, natively tested

not sure how you exactly did this though?  I've never tried
testing of a canadian-cross tree - did you copy the whole build
tree over from the x86 to the ia64 machine?

Thanks,
Richard.

> Thank you so much,
>   René
> 
> > Thanks,
> > Richard.
> > 
> >> ---
> >> gcc/config/ia64/ia64.cc   | 7 ++-
> >> gcc/config/ia64/ia64.md   | 4 ++--
> >> gcc/config/ia64/predicates.md | 2 +-
> >> 3 files changed, 5 insertions(+), 8 deletions(-)
> >> 
> >> diff --git a/gcc/config/ia64/ia64.cc b/gcc/config/ia64/ia64.cc
> >> index ac3d56073ac..d189bfb2cb4 100644
> >> --- a/gcc/config/ia64/ia64.cc
> >> +++ b/gcc/config/ia64/ia64.cc
> >> @@ -618,9 +618,6 @@ static const scoped_attribute_specs *const 
> >> ia64_attribute_table[] =
> >> #undef TARGET_LEGITIMATE_ADDRESS_P
> >> #define TARGET_LEGITIMATE_ADDRESS_P ia64_legitimate_address_p
> >> 
> >> -#undef TARGET_LRA_P
> >> -#define TARGET_LRA_P hook_bool_void_false
> >> -
> >> #undef TARGET_CANNOT_FORCE_CONST_MEM
> >> #define TARGET_CANNOT_FORCE_CONST_MEM ia64_cannot_force_const_mem
> >> 
> >> @@ -1329,7 +1326,7 @@ ia64_expand_move (rtx op0, rtx op1)
> >> {
> >>   machine_mode mode = GET_MODE (op0);
> >> 
> >> -  if (!reload_in_progress && !reload_completed && !ia64_move_ok (op0, 
> >> op1))
> >> +  if (!lra_in_progress && !reload_completed && !ia64_move_ok (op0, op1))
> >> op1 = force_reg (mode, op1);
> >> 
> >>   if ((mode == Pmode || mode == ptr_mode) && symbolic_operand (op1, 
> >> VOIDmode))
> >> @@ -1776,7 +1773,7 @@ ia64_expand_movxf_movrf (machine_mode mode, rtx 
> >> operands[])
> >> }
> >> }
> >> 
> >> -  if (!reload_in_progress && !reload_completed)
> >> +  if (!lra_in_progress && !reload_completed)
> >> {
> >>   operands[1] = spill_xfmode_rfmode_operand (operands[1], 0, mode);
> >> 
> >> diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md
> >> index 698e302081e..d485acc0ea8 100644
> >> --- a/gcc/config/ia64/ia64.md
> >> +++ b/gcc/config/ia64/ia64.md
> >> @@ -2318,7 +2318,7 @@
> >>  (match_operand:DI 3 "register_operand" "f"))
> >> (match_operand:DI 4 "nonmemory_operand" "rI")))
> >>(clobber (match_scratch:DI 5 "=f"))]
> >> -  "reload_in_progress"
> >> +  "lra_in_progress"
> >>   "#"
> >>   [(set_attr "itanium_class" "unknown")])
> >> 
> >> @@ -3407,7 +3407,7 @@
> >>   (match_operand:DI 2 "shladd_operand" "n"))
> >>  (match_operand:DI 3 "nonmemory_operand" "r"))
> >> (match_operand:DI 4 "nonmemory_operand" "rI")))]
> >

Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-12 Thread René Rebe
Hi,

> On Jun 12, 2024, at 13:01, Richard Biener  wrote:
> 
> On Wed, 12 Jun 2024, Rene Rebe wrote:
>> 
>> gcc/
>>* config/ia64/ia64.cc: Enable LRA for ia64.
>>* config/ia64/ia64.md: Likewise.
>>* config/ia64/predicates.md: Likewise.
> 
> That looks simple enough.  I cannot find any copyright assignment on
> file with the FSF so you probably want to contribute to GCC under
> the DCO (see https://gcc.gnu.org/dco.html), in that case please post
> patches with Signed-off-by: tags.

If it helps for the future, I can apply for copyright assignment, too.

> For this patch please state how you tested it, I assume you
> bootstrapped GCC natively on ia64-linux and ran the testsuite.
> I can find two gcc-testresult postings, one appearantly with LRA
> and one without?  Both from May:
> 
> https://sourceware.org/pipermail/gcc-testresults/2024-May/816422.html
> https://sourceware.org/pipermail/gcc-testresults/2024-May/816346.html

Yes, that are the two I quoted in the patch cover letter.

https://gcc.gnu.org/pipermail/gcc-patches/2024-June/654321.html

> somehow for example libstdc++ summaries were not merged, it might
> be you do not have recent python installed on the system?  Or you
> didn't use contrib/test_summary to create those mails.  It would be
> nice to see the difference between LRA and not LRA in the testresults,
> can you quote that?

We usually cross-compile gcc, but also ran natively for the testsuite.
Given the tests run quite long natively on the hardware we currently
have, I summed the results them up in the cover letter. I would assume
that shoudl be enough to include with a note the resulting kernel and
user-space world was booted and worked without issues?

If so, I’ll just resend with the additional information added.

Thank you so much,
René

> Thanks,
> Richard.
> 
>> ---
>> gcc/config/ia64/ia64.cc   | 7 ++-
>> gcc/config/ia64/ia64.md   | 4 ++--
>> gcc/config/ia64/predicates.md | 2 +-
>> 3 files changed, 5 insertions(+), 8 deletions(-)
>> 
>> diff --git a/gcc/config/ia64/ia64.cc b/gcc/config/ia64/ia64.cc
>> index ac3d56073ac..d189bfb2cb4 100644
>> --- a/gcc/config/ia64/ia64.cc
>> +++ b/gcc/config/ia64/ia64.cc
>> @@ -618,9 +618,6 @@ static const scoped_attribute_specs *const 
>> ia64_attribute_table[] =
>> #undef TARGET_LEGITIMATE_ADDRESS_P
>> #define TARGET_LEGITIMATE_ADDRESS_P ia64_legitimate_address_p
>> 
>> -#undef TARGET_LRA_P
>> -#define TARGET_LRA_P hook_bool_void_false
>> -
>> #undef TARGET_CANNOT_FORCE_CONST_MEM
>> #define TARGET_CANNOT_FORCE_CONST_MEM ia64_cannot_force_const_mem
>> 
>> @@ -1329,7 +1326,7 @@ ia64_expand_move (rtx op0, rtx op1)
>> {
>>   machine_mode mode = GET_MODE (op0);
>> 
>> -  if (!reload_in_progress && !reload_completed && !ia64_move_ok (op0, op1))
>> +  if (!lra_in_progress && !reload_completed && !ia64_move_ok (op0, op1))
>> op1 = force_reg (mode, op1);
>> 
>>   if ((mode == Pmode || mode == ptr_mode) && symbolic_operand (op1, 
>> VOIDmode))
>> @@ -1776,7 +1773,7 @@ ia64_expand_movxf_movrf (machine_mode mode, rtx 
>> operands[])
>> }
>> }
>> 
>> -  if (!reload_in_progress && !reload_completed)
>> +  if (!lra_in_progress && !reload_completed)
>> {
>>   operands[1] = spill_xfmode_rfmode_operand (operands[1], 0, mode);
>> 
>> diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md
>> index 698e302081e..d485acc0ea8 100644
>> --- a/gcc/config/ia64/ia64.md
>> +++ b/gcc/config/ia64/ia64.md
>> @@ -2318,7 +2318,7 @@
>>  (match_operand:DI 3 "register_operand" "f"))
>> (match_operand:DI 4 "nonmemory_operand" "rI")))
>>(clobber (match_scratch:DI 5 "=f"))]
>> -  "reload_in_progress"
>> +  "lra_in_progress"
>>   "#"
>>   [(set_attr "itanium_class" "unknown")])
>> 
>> @@ -3407,7 +3407,7 @@
>>   (match_operand:DI 2 "shladd_operand" "n"))
>>  (match_operand:DI 3 "nonmemory_operand" "r"))
>> (match_operand:DI 4 "nonmemory_operand" "rI")))]
>> -  "reload_in_progress"
>> +  "lra_in_progress"
>>   "* gcc_unreachable ();"
>>   "reload_completed"
>>   [(set (match_dup 0) (plus:DI (mult:DI (match_dup 1) (match_dup 2))
>> diff --git a/gcc/config/ia64/predicates.md b/gcc/config/ia64/predicates.md
>> index 01a4effd339..85f5380e734 100644
>> --- a/gcc/config/ia64/predicates.md
>> +++ b/gcc/config/ia64/predicates.md
>> @@ -347,7 +347,7 @@
>>   allows reload the opportunity to avoid spilling addresses to
>>   the stack, and instead simply substitute in the value from a
>>   REG_EQUIV.  We'll split this up again when splitting the insn.  */
>> - if (reload_in_progress || reload_completed)
>> + if (lra_in_progress || reload_completed)
>>  return true;
>> 
>> /* Some symbol types we allow to use with any offset.  */
>> 
> 
> -- 
> Richard Biener 
> SUSE Software Solutions Germany GmbH,
> Frankenstrasse 146, 90461 Nuernberg, Germany;
> GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

-- 
ExactCODE GmbH, Lietzenburger Str. 42, DE-10789 Berlin
http://exactcode.com | http://exactscan.com | htt

Re: [PATCH 2/3] Enabled LRA for ia64.

2024-06-12 Thread Richard Biener
On Wed, 12 Jun 2024, Rene Rebe wrote:
>
> gcc/
> * config/ia64/ia64.cc: Enable LRA for ia64.
> * config/ia64/ia64.md: Likewise.
> * config/ia64/predicates.md: Likewise.

That looks simple enough.  I cannot find any copyright assignment on
file with the FSF so you probably want to contribute to GCC under
the DCO (see https://gcc.gnu.org/dco.html), in that case please post
patches with Signed-off-by: tags.

For this patch please state how you tested it, I assume you
bootstrapped GCC natively on ia64-linux and ran the testsuite.
I can find two gcc-testresult postings, one appearantly with LRA
and one without?  Both from May:

https://sourceware.org/pipermail/gcc-testresults/2024-May/816422.html
https://sourceware.org/pipermail/gcc-testresults/2024-May/816346.html

somehow for example libstdc++ summaries were not merged, it might
be you do not have recent python installed on the system?  Or you
didn't use contrib/test_summary to create those mails.  It would be
nice to see the difference between LRA and not LRA in the testresults,
can you quote that?

Thanks,
Richard.

> ---
>  gcc/config/ia64/ia64.cc   | 7 ++-
>  gcc/config/ia64/ia64.md   | 4 ++--
>  gcc/config/ia64/predicates.md | 2 +-
>  3 files changed, 5 insertions(+), 8 deletions(-)
> 
> diff --git a/gcc/config/ia64/ia64.cc b/gcc/config/ia64/ia64.cc
> index ac3d56073ac..d189bfb2cb4 100644
> --- a/gcc/config/ia64/ia64.cc
> +++ b/gcc/config/ia64/ia64.cc
> @@ -618,9 +618,6 @@ static const scoped_attribute_specs *const 
> ia64_attribute_table[] =
>  #undef TARGET_LEGITIMATE_ADDRESS_P
>  #define TARGET_LEGITIMATE_ADDRESS_P ia64_legitimate_address_p
>  
> -#undef TARGET_LRA_P
> -#define TARGET_LRA_P hook_bool_void_false
> -
>  #undef TARGET_CANNOT_FORCE_CONST_MEM
>  #define TARGET_CANNOT_FORCE_CONST_MEM ia64_cannot_force_const_mem
>  
> @@ -1329,7 +1326,7 @@ ia64_expand_move (rtx op0, rtx op1)
>  {
>machine_mode mode = GET_MODE (op0);
>  
> -  if (!reload_in_progress && !reload_completed && !ia64_move_ok (op0, op1))
> +  if (!lra_in_progress && !reload_completed && !ia64_move_ok (op0, op1))
>  op1 = force_reg (mode, op1);
>  
>if ((mode == Pmode || mode == ptr_mode) && symbolic_operand (op1, 
> VOIDmode))
> @@ -1776,7 +1773,7 @@ ia64_expand_movxf_movrf (machine_mode mode, rtx 
> operands[])
>   }
>  }
>  
> -  if (!reload_in_progress && !reload_completed)
> +  if (!lra_in_progress && !reload_completed)
>  {
>operands[1] = spill_xfmode_rfmode_operand (operands[1], 0, mode);
>  
> diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md
> index 698e302081e..d485acc0ea8 100644
> --- a/gcc/config/ia64/ia64.md
> +++ b/gcc/config/ia64/ia64.md
> @@ -2318,7 +2318,7 @@
> (match_operand:DI 3 "register_operand" "f"))
>(match_operand:DI 4 "nonmemory_operand" "rI")))
> (clobber (match_scratch:DI 5 "=f"))]
> -  "reload_in_progress"
> +  "lra_in_progress"
>"#"
>[(set_attr "itanium_class" "unknown")])
>  
> @@ -3407,7 +3407,7 @@
>  (match_operand:DI 2 "shladd_operand" "n"))
> (match_operand:DI 3 "nonmemory_operand" "r"))
>(match_operand:DI 4 "nonmemory_operand" "rI")))]
> -  "reload_in_progress"
> +  "lra_in_progress"
>"* gcc_unreachable ();"
>"reload_completed"
>[(set (match_dup 0) (plus:DI (mult:DI (match_dup 1) (match_dup 2))
> diff --git a/gcc/config/ia64/predicates.md b/gcc/config/ia64/predicates.md
> index 01a4effd339..85f5380e734 100644
> --- a/gcc/config/ia64/predicates.md
> +++ b/gcc/config/ia64/predicates.md
> @@ -347,7 +347,7 @@
>  allows reload the opportunity to avoid spilling addresses to
>  the stack, and instead simply substitute in the value from a
>  REG_EQUIV.  We'll split this up again when splitting the insn.  */
> - if (reload_in_progress || reload_completed)
> + if (lra_in_progress || reload_completed)
> return true;
>  
>   /* Some symbol types we allow to use with any offset.  */
> 

-- 
Richard Biener 
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)


[PATCH 2/3] Enabled LRA for ia64.

2024-06-12 Thread Rene Rebe
gcc/
* config/ia64/ia64.cc: Enable LRA for ia64.
* config/ia64/ia64.md: Likewise.
* config/ia64/predicates.md: Likewise.
---
 gcc/config/ia64/ia64.cc   | 7 ++-
 gcc/config/ia64/ia64.md   | 4 ++--
 gcc/config/ia64/predicates.md | 2 +-
 3 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/gcc/config/ia64/ia64.cc b/gcc/config/ia64/ia64.cc
index ac3d56073ac..d189bfb2cb4 100644
--- a/gcc/config/ia64/ia64.cc
+++ b/gcc/config/ia64/ia64.cc
@@ -618,9 +618,6 @@ static const scoped_attribute_specs *const 
ia64_attribute_table[] =
 #undef TARGET_LEGITIMATE_ADDRESS_P
 #define TARGET_LEGITIMATE_ADDRESS_P ia64_legitimate_address_p
 
-#undef TARGET_LRA_P
-#define TARGET_LRA_P hook_bool_void_false
-
 #undef TARGET_CANNOT_FORCE_CONST_MEM
 #define TARGET_CANNOT_FORCE_CONST_MEM ia64_cannot_force_const_mem
 
@@ -1329,7 +1326,7 @@ ia64_expand_move (rtx op0, rtx op1)
 {
   machine_mode mode = GET_MODE (op0);
 
-  if (!reload_in_progress && !reload_completed && !ia64_move_ok (op0, op1))
+  if (!lra_in_progress && !reload_completed && !ia64_move_ok (op0, op1))
 op1 = force_reg (mode, op1);
 
   if ((mode == Pmode || mode == ptr_mode) && symbolic_operand (op1, VOIDmode))
@@ -1776,7 +1773,7 @@ ia64_expand_movxf_movrf (machine_mode mode, rtx 
operands[])
}
 }
 
-  if (!reload_in_progress && !reload_completed)
+  if (!lra_in_progress && !reload_completed)
 {
   operands[1] = spill_xfmode_rfmode_operand (operands[1], 0, mode);
 
diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md
index 698e302081e..d485acc0ea8 100644
--- a/gcc/config/ia64/ia64.md
+++ b/gcc/config/ia64/ia64.md
@@ -2318,7 +2318,7 @@
  (match_operand:DI 3 "register_operand" "f"))
 (match_operand:DI 4 "nonmemory_operand" "rI")))
(clobber (match_scratch:DI 5 "=f"))]
-  "reload_in_progress"
+  "lra_in_progress"
   "#"
   [(set_attr "itanium_class" "unknown")])
 
@@ -3407,7 +3407,7 @@
   (match_operand:DI 2 "shladd_operand" "n"))
  (match_operand:DI 3 "nonmemory_operand" "r"))
 (match_operand:DI 4 "nonmemory_operand" "rI")))]
-  "reload_in_progress"
+  "lra_in_progress"
   "* gcc_unreachable ();"
   "reload_completed"
   [(set (match_dup 0) (plus:DI (mult:DI (match_dup 1) (match_dup 2))
diff --git a/gcc/config/ia64/predicates.md b/gcc/config/ia64/predicates.md
index 01a4effd339..85f5380e734 100644
--- a/gcc/config/ia64/predicates.md
+++ b/gcc/config/ia64/predicates.md
@@ -347,7 +347,7 @@
   allows reload the opportunity to avoid spilling addresses to
   the stack, and instead simply substitute in the value from a
   REG_EQUIV.  We'll split this up again when splitting the insn.  */
-   if (reload_in_progress || reload_completed)
+   if (lra_in_progress || reload_completed)
  return true;
 
/* Some symbol types we allow to use with any offset.  */
-- 
2.45.0


-- 
  René Rebe, ExactCODE GmbH, Lietzenburger Str. 42, DE-10789 Berlin
  https://exactcode.com | https://t2sde.org | https://rene.rebe.de