c++: Allow module name to be a single letter on Windows
authorTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Thu, 27 Oct 2022 16:03:15 +0000 (18:03 +0200)
committerTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>
Mon, 28 Nov 2022 15:49:31 +0000 (16:49 +0100)
commitd30e98b54d6a5124bb48b10b593e264f048d38aa
tree1d9bb677eada9c7d4ffe2ca86fd4fd71fc796535
parentc775e2b81fca39f366040d423e3e44f4abecf753
c++: Allow module name to be a single letter on Windows

On Windows, the ':' character is special and when the module name is
a single character, like 'A', then the flatname would be (for
example) 'A:Foo'. On Windows, 'A:Foo' is treated as an absolute
path by the module loader and is likely not found.

Without this patch, the test case pr98944_c.C fails with:

In module imported at /src/gcc/testsuite/g++.dg/modules/pr98944_b.C:7:1,
of module A:Foo, imported at /src/gcc/testsuite/g++.dg/modules/pr98944_c.C:7:
A:Internals: error: header module expected, module 'A:Internals' found
A:Internals: error: failed to read compiled module: Bad file data
A:Internals: note: compiled module file is 'gcm.cache/A-Internals.gcm'
In module imported at /src/gcc/testsuite/g++.dg/modules/pr98944_c.C:7:8:
A:Foo: error: failed to read compiled module: Bad import dependency
A:Foo: note: compiled module file is 'gcm.cache/A-Foo.gcm'
A:Foo: fatal error: returning to the gate for a mechanical issue
compilation terminated.

gcc/cp/ChangeLog:

* module.cc: On Windows, 'A:Foo' is supposed to be a module
and not a path.

Co-Authored-By: Yvan ROUX <yvan.roux@foss.st.com>
Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
gcc/cp/module.cc