Message ID | 65b56cce.170a0220.25f58.78f9@mx.google.com |
---|---|
State | New |
Headers | show |
Series | c++/modules: Handle error header names in modules [PR107594] | expand |
On 1/27/24 15:51, Nathaniel Shead wrote: > I don't provide a new test because this error only happens when there > are no include paths at all, and I haven't worked out a way to get this > to happen within DejaGNU (as it adds a number of `-B` and `-I` flags). > > Bootstrapped and regtested on x86_64-pc-linux-gnu, OK for trunk? OK. > -- >8 -- > > When there are no include paths while preprocessing a header-name token, > an empty STRING_CST is returned. This patch ensures this is handled when > attempting to create a module for this name. > > PR c++/107594 > > gcc/cp/ChangeLog: > > * module.cc (get_module): Bail on empty name. > > Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com> > --- > gcc/cp/module.cc | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc > index 840c7ef6dab..3c2fef0e3f4 100644 > --- a/gcc/cp/module.cc > +++ b/gcc/cp/module.cc > @@ -14050,6 +14050,12 @@ get_primary (module_state *parent) > module_state * > get_module (tree name, module_state *parent, bool partition) > { > + /* We might be given an empty NAME if preprocessing fails to handle > + a header-name token. */ > + if (name && TREE_CODE (name) == STRING_CST > + && TREE_STRING_LENGTH (name) == 0) > + return nullptr; > + > if (partition) > { > if (!parent)
diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index 840c7ef6dab..3c2fef0e3f4 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -14050,6 +14050,12 @@ get_primary (module_state *parent) module_state * get_module (tree name, module_state *parent, bool partition) { + /* We might be given an empty NAME if preprocessing fails to handle + a header-name token. */ + if (name && TREE_CODE (name) == STRING_CST + && TREE_STRING_LENGTH (name) == 0) + return nullptr; + if (partition) { if (!parent)
I don't provide a new test because this error only happens when there are no include paths at all, and I haven't worked out a way to get this to happen within DejaGNU (as it adds a number of `-B` and `-I` flags). Bootstrapped and regtested on x86_64-pc-linux-gnu, OK for trunk? -- >8 -- When there are no include paths while preprocessing a header-name token, an empty STRING_CST is returned. This patch ensures this is handled when attempting to create a module for this name. PR c++/107594 gcc/cp/ChangeLog: * module.cc (get_module): Bail on empty name. Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com> --- gcc/cp/module.cc | 6 ++++++ 1 file changed, 6 insertions(+)