c++: header unit purview [PR 99283]
authorNathan Sidwell <nathan@acm.org>
Fri, 2 Apr 2021 13:28:29 +0000 (06:28 -0700)
committerNathan Sidwell <nathan@acm.org>
Fri, 2 Apr 2021 16:08:28 +0000 (09:08 -0700)
commitf4e05eebd6aac6118cbd9e0a04c011b6ed682826
treee82ecaf9f225b216826cd364e56cd899ea7001cf
parentc84491827990e4f2746442c23294fc17923b265d
c++: header unit purview [PR 99283]

This case occurs due to some equivocation about module_purview.
Header-unit building is treated as a module-purview, but we should not
treat entities imported from that as module purview.  (header units
were not a thing when I started).  The testcase didn't understand we
had a local textual definition, but it was (incorrectly) marked as
module-purview, because we'd read in a declaration from a header unit
too.

gcc/cp/
* cp-tree.h (lang_decl_base): Correct module flag comment.
* module.cc (trees_in::assert_definition): Break out
not_tmpl var.
(trees_out::lang_decl_bools): Do not write purview for header units.
gcc/testsuite/
* g++.dg/modules/pr99283-6_d.H: New.
* g++.dg/modules/pr99283-7-swap.h: New.
* g++.dg/modules/pr99283-7-traits.h: New.
* g++.dg/modules/pr99283-7_a.H: New.
* g++.dg/modules/pr99283-7_b.H: New.
* g++.dg/modules/pr99283-7_c.C: New.
* g++.dg/modules/pr99283-7_d.H: New.
gcc/cp/cp-tree.h
gcc/cp/module.cc
gcc/testsuite/g++.dg/modules/pr99283-6_d.H [new file with mode: 0644]
gcc/testsuite/g++.dg/modules/pr99283-7-swap.h [new file with mode: 0644]
gcc/testsuite/g++.dg/modules/pr99283-7-traits.h [new file with mode: 0644]
gcc/testsuite/g++.dg/modules/pr99283-7_a.H [new file with mode: 0644]
gcc/testsuite/g++.dg/modules/pr99283-7_b.H [new file with mode: 0644]
gcc/testsuite/g++.dg/modules/pr99283-7_c.C [new file with mode: 0644]
gcc/testsuite/g++.dg/modules/pr99283-7_d.H [new file with mode: 0644]