testsuite: Add support for Rust and Modula-2 effective target tests
Checks
Commit Message
Hi!
This patch allows magic comments also for Rust and Modula-2
for effective target tests etc. and fixes up the Assembly entry
- it is a glob, so /* Assembly can match /whatever Assembly and
not just /* Assembly.
Tested on x86_64-linux with
make check-g++ RUNTESTFLAGS=i386.exp=pr35513*
and verifying it still uses *.S extension for the property_1_needed
effective target test.
Ok for trunk?
2022-12-15 Jakub Jelinek <jakub@redhat.com>
* lib/target-supports.exp (check_compile): Add support for
Rust and Modula-2. Use \* rather than * for /* comment for
Assembly.
Jakub
Comments
On Thu, 15 Dec 2022, Jakub Jelinek wrote:
> Hi!
>
> This patch allows magic comments also for Rust and Modula-2
> for effective target tests etc. and fixes up the Assembly entry
> - it is a glob, so /* Assembly can match /whatever Assembly and
> not just /* Assembly.
>
> Tested on x86_64-linux with
> make check-g++ RUNTESTFLAGS=i386.exp=pr35513*
> and verifying it still uses *.S extension for the property_1_needed
> effective target test.
>
> Ok for trunk?
OK.
Thanks,
Richard.
> 2022-12-15 Jakub Jelinek <jakub@redhat.com>
>
> * lib/target-supports.exp (check_compile): Add support for
> Rust and Modula-2. Use \* rather than * for /* comment for
> Assembly.
>
> --- gcc/testsuite/lib/target-supports.exp.jj 2022-11-30 10:29:42.217698938 +0100
> +++ gcc/testsuite/lib/target-supports.exp 2022-12-15 13:08:47.941221943 +0100
> @@ -36,7 +36,9 @@
> # "! Fortran" for Fortran code,
> # "/* ObjC", for ObjC
> # "// ObjC++" for ObjC++
> -# and "// Go" for Go
> +# "// Go" for Go
> +# "// Rust" for Rust
> +# and "(* Modula-2" for Modula-2
> # If the tool is ObjC/ObjC++ then we overide the extension to .m/.mm to
> # allow for ObjC/ObjC++ specific flags.
>
> @@ -58,13 +60,15 @@ proc check_compile {basename type conten
> set options ""
> }
> switch -glob -- $contents {
> - "*/* Assembly*" { set src ${basename}[pid].S }
> + "*/\* Assembly*" { set src ${basename}[pid].S }
> "*! Fortran*" { set src ${basename}[pid].f90 }
> "*// C++*" { set src ${basename}[pid].cc }
> "*// D*" { set src ${basename}[pid].d }
> "*// ObjC++*" { set src ${basename}[pid].mm }
> "*/* ObjC*" { set src ${basename}[pid].m }
> "*// Go*" { set src ${basename}[pid].go }
> + "*// Rust*" { set src ${basename}[pid].rs }
> + "*(\* Modula-2*" { set src ${basename}[pid].mod }
> default {
> switch -- $tool {
> "objc" { set src ${basename}[pid].m }
>
> Jakub
>
>
Hi Jakub,
On 12/15/22 13:23, Jakub Jelinek wrote:
> Hi!
>
> This patch allows magic comments also for Rust and Modula-2
> for effective target tests etc. and fixes up the Assembly entry
> - it is a glob, so /* Assembly can match /whatever Assembly and
> not just /* Assembly.
>
> Tested on x86_64-linux with
> make check-g++ RUNTESTFLAGS=i386.exp=pr35513*
> and verifying it still uses *.S extension for the property_1_needed
> effective target test.
>
> Ok for trunk?
>
> 2022-12-15 Jakub Jelinek <jakub@redhat.com>
>
> * lib/target-supports.exp (check_compile): Add support for
> Rust and Modula-2. Use \* rather than * for /* comment for
> Assembly.
>
> --- gcc/testsuite/lib/target-supports.exp.jj 2022-11-30 10:29:42.217698938 +0100
> +++ gcc/testsuite/lib/target-supports.exp 2022-12-15 13:08:47.941221943 +0100
> @@ -36,7 +36,9 @@
> # "! Fortran" for Fortran code,
> # "/* ObjC", for ObjC
> # "// ObjC++" for ObjC++
> -# and "// Go" for Go
> +# "// Go" for Go
> +# "// Rust" for Rust
> +# and "(* Modula-2" for Modula-2
> # If the tool is ObjC/ObjC++ then we overide the extension to .m/.mm to
> # allow for ObjC/ObjC++ specific flags.
>
> @@ -58,13 +60,15 @@ proc check_compile {basename type conten
> set options ""
> }
> switch -glob -- $contents {
> - "*/* Assembly*" { set src ${basename}[pid].S }
> + "*/\* Assembly*" { set src ${basename}[pid].S }
> "*! Fortran*" { set src ${basename}[pid].f90 }
> "*// C++*" { set src ${basename}[pid].cc }
> "*// D*" { set src ${basename}[pid].d }
> "*// ObjC++*" { set src ${basename}[pid].mm }
> "*/* ObjC*" { set src ${basename}[pid].m }
> "*// Go*" { set src ${basename}[pid].go }
> + "*// Rust*" { set src ${basename}[pid].rs }
> + "*(\* Modula-2*" { set src ${basename}[pid].mod }
> default {
> switch -- $tool {
> "objc" { set src ${basename}[pid].m }
>
> Jakub
>
LGTM :)
Thank you,
Arthur
On Dez 15 2022, Jakub Jelinek via Gcc-rust wrote:
> @@ -58,13 +60,15 @@ proc check_compile {basename type conten
> set options ""
> }
> switch -glob -- $contents {
> - "*/* Assembly*" { set src ${basename}[pid].S }
> + "*/\* Assembly*" { set src ${basename}[pid].S }
That's a no-op. Either double the backslash or quote with {} instead of
"".
On Dez 15 2022, Jakub Jelinek via Gcc-rust wrote:
> @@ -58,13 +60,15 @@ proc check_compile {basename type conten
> set options ""
> }
> switch -glob -- $contents {
> - "*/* Assembly*" { set src ${basename}[pid].S }
> + "*/\* Assembly*" { set src ${basename}[pid].S }
> "*! Fortran*" { set src ${basename}[pid].f90 }
> "*// C++*" { set src ${basename}[pid].cc }
> "*// D*" { set src ${basename}[pid].d }
> "*// ObjC++*" { set src ${basename}[pid].mm }
> "*/* ObjC*" { set src ${basename}[pid].m }
You probably want to quote the * here too.
On Thu, Dec 15, 2022 at 02:03:36PM +0100, Andreas Schwab wrote:
> On Dez 15 2022, Jakub Jelinek via Gcc-rust wrote:
>
> > @@ -58,13 +60,15 @@ proc check_compile {basename type conten
> > set options ""
> > }
> > switch -glob -- $contents {
> > - "*/* Assembly*" { set src ${basename}[pid].S }
> > + "*/\* Assembly*" { set src ${basename}[pid].S }
> > "*! Fortran*" { set src ${basename}[pid].f90 }
> > "*// C++*" { set src ${basename}[pid].cc }
> > "*// D*" { set src ${basename}[pid].d }
> > "*// ObjC++*" { set src ${basename}[pid].mm }
> > "*/* ObjC*" { set src ${basename}[pid].m }
>
> You probably want to quote the * here too.
You're right on both, I've committed this follow-up
after verifying that Assembly test still works (it works even with \\\*
but doesn't with \\\\*) and verifying that changing
check_effective_target_property_1_needed
to have // Assembly instead of /* Assembly incorrectly works with
"*/* Assembly*", "*/\* Assembly*" but correctly doesn't work with
"*/\\* Assembly*" or "*/\\\* Assembly*".
Committed to trunk. Sorry.
2022-12-15 Jakub Jelinek <jakub@redhat.com>
* lib/target-supports.exp (check_compile): Further quoting
fixes for /* Assembly, /* ObjC and (* Modula-2 *) checks.
--- gcc/testsuite/lib/target-supports.exp.jj 2022-12-15 13:57:40.000000000 +0100
+++ gcc/testsuite/lib/target-supports.exp 2022-12-15 14:14:02.987854385 +0100
@@ -60,15 +60,15 @@ proc check_compile {basename type conten
set options ""
}
switch -glob -- $contents {
- "*/\* Assembly*" { set src ${basename}[pid].S }
+ "*/\\* Assembly*" { set src ${basename}[pid].S }
"*! Fortran*" { set src ${basename}[pid].f90 }
"*// C++*" { set src ${basename}[pid].cc }
"*// D*" { set src ${basename}[pid].d }
"*// ObjC++*" { set src ${basename}[pid].mm }
- "*/* ObjC*" { set src ${basename}[pid].m }
+ "*/\\* ObjC*" { set src ${basename}[pid].m }
"*// Go*" { set src ${basename}[pid].go }
"*// Rust*" { set src ${basename}[pid].rs }
- "*(\* Modula-2*" { set src ${basename}[pid].mod }
+ "*(\\* Modula-2*" { set src ${basename}[pid].mod }
default {
switch -- $tool {
"objc" { set src ${basename}[pid].m }
Jakub
@@ -36,7 +36,9 @@
# "! Fortran" for Fortran code,
# "/* ObjC", for ObjC
# "// ObjC++" for ObjC++
-# and "// Go" for Go
+# "// Go" for Go
+# "// Rust" for Rust
+# and "(* Modula-2" for Modula-2
# If the tool is ObjC/ObjC++ then we overide the extension to .m/.mm to
# allow for ObjC/ObjC++ specific flags.
@@ -58,13 +60,15 @@ proc check_compile {basename type conten
set options ""
}
switch -glob -- $contents {
- "*/* Assembly*" { set src ${basename}[pid].S }
+ "*/\* Assembly*" { set src ${basename}[pid].S }
"*! Fortran*" { set src ${basename}[pid].f90 }
"*// C++*" { set src ${basename}[pid].cc }
"*// D*" { set src ${basename}[pid].d }
"*// ObjC++*" { set src ${basename}[pid].mm }
"*/* ObjC*" { set src ${basename}[pid].m }
"*// Go*" { set src ${basename}[pid].go }
+ "*// Rust*" { set src ${basename}[pid].rs }
+ "*(\* Modula-2*" { set src ${basename}[pid].mod }
default {
switch -- $tool {
"objc" { set src ${basename}[pid].m }