* [PATCH] testsuite/C++: suppress filename canonicalization in module tests
@ 2022-06-28 14:06 Jan Beulich
2023-04-25 15:04 ` Ping: " Jan Beulich
0 siblings, 1 reply; 4+ messages in thread
From: Jan Beulich @ 2022-06-28 14:06 UTC (permalink / raw)
To: gcc-patches; +Cc: Jason Merrill, Nathan Sidwell
The pathname underneath gcm.cache/ is determined from the effective name
used for the main input file of a particular module. When modules are
built, no canonicalization occurs for the main input file. Hence the
module file wouldn't be found if a different (the canonicalized) file
name was used when importing that same module. (This is an effect of
importing happening in the preprocessor, just like #include handling.)
Since it doesn't look easy to make module generation use libcpp's
maybe_shorter_path() (in fact I'd consider this a layering violation,
while cloning the logic would - at least in principle - be prone to both
going out of sync), simply suppress system header path canonicalization
for the respective tests.
gcc/testsuite/
* g++.dg/modules/alias-1_b.C: Add -fno-canonical-system-headers.
* g++.dg/modules/alias-1_d.C: Likewise.
* g++.dg/modules/alias-1_e.C: Likewise.
* g++.dg/modules/alias-1_f.C: Likewise.
* g++.dg/modules/cpp-6_c.C: Likewise.
* g++.dg/modules/dir-only-2_b.C: Likewise.
---
Strictly speaking it could be necessary to also suppress
canonicalization when generating the modules, but for now they're self-
contained, i.e. don't include any "real" system headers. IOW at the
moment the tests aren't susceptible to the issue at generation time.
--- a/gcc/testsuite/g++.dg/modules/alias-1_b.C
+++ b/gcc/testsuite/g++.dg/modules/alias-1_b.C
@@ -1,4 +1,4 @@
-// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir]" }
+// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir] -fno-canonical-system-headers" }
// Alias at the header file. We have one CMI file
import "alias-1_a.H";
--- a/gcc/testsuite/g++.dg/modules/alias-1_d.C
+++ b/gcc/testsuite/g++.dg/modules/alias-1_d.C
@@ -1,4 +1,4 @@
-// { dg-additional-options "-fmodules-ts -isystem [srcdir]" }
+// { dg-additional-options "-fmodules-ts -isystem [srcdir] -fno-canonical-system-headers" }
// { dg-module-cmi kevin }
export module kevin;
--- a/gcc/testsuite/g++.dg/modules/alias-1_e.C
+++ b/gcc/testsuite/g++.dg/modules/alias-1_e.C
@@ -1,4 +1,4 @@
-// { dg-additional-options "-fmodules-ts -isystem [srcdir]" }
+// { dg-additional-options "-fmodules-ts -isystem [srcdir] -fno-canonical-system-headers" }
import bob;
import kevin;
--- a/gcc/testsuite/g++.dg/modules/alias-1_f.C
+++ b/gcc/testsuite/g++.dg/modules/alias-1_f.C
@@ -1,4 +1,4 @@
-// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir]" }
+// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir] -fno-canonical-system-headers" }
import kevin;
import bob;
--- a/gcc/testsuite/g++.dg/modules/cpp-6_c.C
+++ b/gcc/testsuite/g++.dg/modules/cpp-6_c.C
@@ -1,5 +1,5 @@
// { dg-do preprocess }
-// { dg-additional-options "-fmodules-ts -isystem [srcdir]" }
+// { dg-additional-options "-fmodules-ts -isystem [srcdir] -fno-canonical-system-headers" }
#define empty
#define nop(X) X
--- a/gcc/testsuite/g++.dg/modules/dir-only-2_b.C
+++ b/gcc/testsuite/g++.dg/modules/dir-only-2_b.C
@@ -1,5 +1,5 @@
// { dg-do preprocess }
-// { dg-additional-options "-fmodules-ts -fdirectives-only -isystem [srcdir]" }
+// { dg-additional-options "-fmodules-ts -fdirectives-only -isystem [srcdir] -fno-canonical-system-headers" }
// a comment
module; // line
frob
^ permalink raw reply [flat|nested] 4+ messages in thread
* Ping: [PATCH] testsuite/C++: suppress filename canonicalization in module tests
2022-06-28 14:06 [PATCH] testsuite/C++: suppress filename canonicalization in module tests Jan Beulich
@ 2023-04-25 15:04 ` Jan Beulich
2023-04-27 22:24 ` Nathan Sidwell
0 siblings, 1 reply; 4+ messages in thread
From: Jan Beulich @ 2023-04-25 15:04 UTC (permalink / raw)
To: gcc-patches; +Cc: Jason Merrill, Nathan Sidwell, Rainer Orth, Mike Stump
On 28.06.2022 16:06, Jan Beulich wrote:
> The pathname underneath gcm.cache/ is determined from the effective name
> used for the main input file of a particular module. When modules are
> built, no canonicalization occurs for the main input file. Hence the
> module file wouldn't be found if a different (the canonicalized) file
> name was used when importing that same module. (This is an effect of
> importing happening in the preprocessor, just like #include handling.)
>
> Since it doesn't look easy to make module generation use libcpp's
> maybe_shorter_path() (in fact I'd consider this a layering violation,
> while cloning the logic would - at least in principle - be prone to both
> going out of sync), simply suppress system header path canonicalization
> for the respective tests.
Ping: This still looks to apply as is.
Thanks, Jan
> ---
> Strictly speaking it could be necessary to also suppress
> canonicalization when generating the modules, but for now they're self-
> contained, i.e. don't include any "real" system headers. IOW at the
> moment the tests aren't susceptible to the issue at generation time.
>
> --- a/gcc/testsuite/g++.dg/modules/alias-1_b.C
> +++ b/gcc/testsuite/g++.dg/modules/alias-1_b.C
> @@ -1,4 +1,4 @@
> -// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir]" }
> +// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir] -fno-canonical-system-headers" }
>
> // Alias at the header file. We have one CMI file
> import "alias-1_a.H";
> --- a/gcc/testsuite/g++.dg/modules/alias-1_d.C
> +++ b/gcc/testsuite/g++.dg/modules/alias-1_d.C
> @@ -1,4 +1,4 @@
> -// { dg-additional-options "-fmodules-ts -isystem [srcdir]" }
> +// { dg-additional-options "-fmodules-ts -isystem [srcdir] -fno-canonical-system-headers" }
> // { dg-module-cmi kevin }
>
> export module kevin;
> --- a/gcc/testsuite/g++.dg/modules/alias-1_e.C
> +++ b/gcc/testsuite/g++.dg/modules/alias-1_e.C
> @@ -1,4 +1,4 @@
> -// { dg-additional-options "-fmodules-ts -isystem [srcdir]" }
> +// { dg-additional-options "-fmodules-ts -isystem [srcdir] -fno-canonical-system-headers" }
>
> import bob;
> import kevin;
> --- a/gcc/testsuite/g++.dg/modules/alias-1_f.C
> +++ b/gcc/testsuite/g++.dg/modules/alias-1_f.C
> @@ -1,4 +1,4 @@
> -// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir]" }
> +// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir] -fno-canonical-system-headers" }
>
> import kevin;
> import bob;
> --- a/gcc/testsuite/g++.dg/modules/cpp-6_c.C
> +++ b/gcc/testsuite/g++.dg/modules/cpp-6_c.C
> @@ -1,5 +1,5 @@
> // { dg-do preprocess }
> -// { dg-additional-options "-fmodules-ts -isystem [srcdir]" }
> +// { dg-additional-options "-fmodules-ts -isystem [srcdir] -fno-canonical-system-headers" }
>
> #define empty
> #define nop(X) X
> --- a/gcc/testsuite/g++.dg/modules/dir-only-2_b.C
> +++ b/gcc/testsuite/g++.dg/modules/dir-only-2_b.C
> @@ -1,5 +1,5 @@
> // { dg-do preprocess }
> -// { dg-additional-options "-fmodules-ts -fdirectives-only -isystem [srcdir]" }
> +// { dg-additional-options "-fmodules-ts -fdirectives-only -isystem [srcdir] -fno-canonical-system-headers" }
> // a comment
> module; // line
> frob
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Ping: [PATCH] testsuite/C++: suppress filename canonicalization in module tests
2023-04-25 15:04 ` Ping: " Jan Beulich
@ 2023-04-27 22:24 ` Nathan Sidwell
2023-04-28 6:59 ` Jan Beulich
0 siblings, 1 reply; 4+ messages in thread
From: Nathan Sidwell @ 2023-04-27 22:24 UTC (permalink / raw)
To: Jan Beulich, gcc-patches; +Cc: Jason Merrill, Rainer Orth, Mike Stump
On 4/25/23 11:04, Jan Beulich wrote:
> On 28.06.2022 16:06, Jan Beulich wrote:
>> The pathname underneath gcm.cache/ is determined from the effective name
>> used for the main input file of a particular module. When modules are
>> built, no canonicalization occurs for the main input file. Hence the
>> module file wouldn't be found if a different (the canonicalized) file
>> name was used when importing that same module. (This is an effect of
>> importing happening in the preprocessor, just like #include handling.)
>>
>> Since it doesn't look easy to make module generation use libcpp's
>> maybe_shorter_path() (in fact I'd consider this a layering violation,
>> while cloning the logic would - at least in principle - be prone to both
>> going out of sync), simply suppress system header path canonicalization
>> for the respective tests.
>
> Ping: This still looks to apply as is.
ok -- I was unaware of this. might be sensible to file a defect about this?
>
> Thanks, Jan
>
>> ---
>> Strictly speaking it could be necessary to also suppress
>> canonicalization when generating the modules, but for now they're self-
>> contained, i.e. don't include any "real" system headers. IOW at the
>> moment the tests aren't susceptible to the issue at generation time.
>>
>> --- a/gcc/testsuite/g++.dg/modules/alias-1_b.C
>> +++ b/gcc/testsuite/g++.dg/modules/alias-1_b.C
>> @@ -1,4 +1,4 @@
>> -// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir]" }
>> +// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir] -fno-canonical-system-headers" }
>>
>> // Alias at the header file. We have one CMI file
>> import "alias-1_a.H";
>> --- a/gcc/testsuite/g++.dg/modules/alias-1_d.C
>> +++ b/gcc/testsuite/g++.dg/modules/alias-1_d.C
>> @@ -1,4 +1,4 @@
>> -// { dg-additional-options "-fmodules-ts -isystem [srcdir]" }
>> +// { dg-additional-options "-fmodules-ts -isystem [srcdir] -fno-canonical-system-headers" }
>> // { dg-module-cmi kevin }
>>
>> export module kevin;
>> --- a/gcc/testsuite/g++.dg/modules/alias-1_e.C
>> +++ b/gcc/testsuite/g++.dg/modules/alias-1_e.C
>> @@ -1,4 +1,4 @@
>> -// { dg-additional-options "-fmodules-ts -isystem [srcdir]" }
>> +// { dg-additional-options "-fmodules-ts -isystem [srcdir] -fno-canonical-system-headers" }
>>
>> import bob;
>> import kevin;
>> --- a/gcc/testsuite/g++.dg/modules/alias-1_f.C
>> +++ b/gcc/testsuite/g++.dg/modules/alias-1_f.C
>> @@ -1,4 +1,4 @@
>> -// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir]" }
>> +// { dg-additional-options "-fmodules-ts -fdump-lang-module -isystem [srcdir] -fno-canonical-system-headers" }
>>
>> import kevin;
>> import bob;
>> --- a/gcc/testsuite/g++.dg/modules/cpp-6_c.C
>> +++ b/gcc/testsuite/g++.dg/modules/cpp-6_c.C
>> @@ -1,5 +1,5 @@
>> // { dg-do preprocess }
>> -// { dg-additional-options "-fmodules-ts -isystem [srcdir]" }
>> +// { dg-additional-options "-fmodules-ts -isystem [srcdir] -fno-canonical-system-headers" }
>>
>> #define empty
>> #define nop(X) X
>> --- a/gcc/testsuite/g++.dg/modules/dir-only-2_b.C
>> +++ b/gcc/testsuite/g++.dg/modules/dir-only-2_b.C
>> @@ -1,5 +1,5 @@
>> // { dg-do preprocess }
>> -// { dg-additional-options "-fmodules-ts -fdirectives-only -isystem [srcdir]" }
>> +// { dg-additional-options "-fmodules-ts -fdirectives-only -isystem [srcdir] -fno-canonical-system-headers" }
>> // a comment
>> module; // line
>> frob
>
--
Nathan Sidwell
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Ping: [PATCH] testsuite/C++: suppress filename canonicalization in module tests
2023-04-27 22:24 ` Nathan Sidwell
@ 2023-04-28 6:59 ` Jan Beulich
0 siblings, 0 replies; 4+ messages in thread
From: Jan Beulich @ 2023-04-28 6:59 UTC (permalink / raw)
To: Nathan Sidwell; +Cc: Jason Merrill, Rainer Orth, Mike Stump, gcc-patches
On 28.04.2023 00:24, Nathan Sidwell wrote:
> On 4/25/23 11:04, Jan Beulich wrote:
>> On 28.06.2022 16:06, Jan Beulich wrote:
>>> The pathname underneath gcm.cache/ is determined from the effective name
>>> used for the main input file of a particular module. When modules are
>>> built, no canonicalization occurs for the main input file. Hence the
>>> module file wouldn't be found if a different (the canonicalized) file
>>> name was used when importing that same module. (This is an effect of
>>> importing happening in the preprocessor, just like #include handling.)
>>>
>>> Since it doesn't look easy to make module generation use libcpp's
>>> maybe_shorter_path() (in fact I'd consider this a layering violation,
>>> while cloning the logic would - at least in principle - be prone to both
>>> going out of sync), simply suppress system header path canonicalization
>>> for the respective tests.
>>
>> Ping: This still looks to apply as is.
>
> ok -- I was unaware of this. might be sensible to file a defect about this?
Sure: 109660.
Jan
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-04-28 6:59 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-28 14:06 [PATCH] testsuite/C++: suppress filename canonicalization in module tests Jan Beulich
2023-04-25 15:04 ` Ping: " Jan Beulich
2023-04-27 22:24 ` Nathan Sidwell
2023-04-28 6:59 ` Jan Beulich
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).