This patch series adds support for streaming some internal declarations in C++20 modules that we previously would ICE on.
The series has been successfully bootstrapped and regtested on x86_64-pc-linux-gnu. Additionally, modules.exp now passes with '--target_board=unix/-fsanitize=undefined'. Nathaniel Shead (4): c++: Add flag to detect underlying representative of bitfield decls c++/modules: Implement streaming of uncontexted TYPE_DECLs [PR98735] c++/modules: Support streaming new size cookie for constexpr [PR120040] c++/modules: Avoid name clashes when streaming internal labels [PR98375,PR118904] gcc/cp/constexpr.cc | 2 +- gcc/cp/cp-gimplify.cc | 5 +- gcc/cp/init.cc | 10 +- gcc/cp/module.cc | 170 +++++++++++++++++++-- gcc/stor-layout.cc | 1 + gcc/testsuite/g++.dg/modules/pr120040_a.C | 19 +++ gcc/testsuite/g++.dg/modules/pr120040_b.C | 15 ++ gcc/testsuite/g++.dg/modules/src-loc-1.h | 6 + gcc/testsuite/g++.dg/modules/src-loc-1_a.H | 7 + gcc/testsuite/g++.dg/modules/src-loc-1_b.C | 5 + gcc/testsuite/g++.dg/modules/src-loc-1_c.C | 16 ++ gcc/testsuite/g++.dg/modules/ubsan-1_a.C | 10 ++ gcc/testsuite/g++.dg/modules/ubsan-1_b.C | 14 ++ gcc/testsuite/g++.dg/ubsan/module-1-aux.cc | 12 ++ gcc/testsuite/g++.dg/ubsan/module-1.C | 11 ++ gcc/tree-core.h | 1 + gcc/tree.cc | 51 +++++++ gcc/tree.h | 12 ++ gcc/ubsan.cc | 16 +- 19 files changed, 350 insertions(+), 33 deletions(-) create mode 100644 gcc/testsuite/g++.dg/modules/pr120040_a.C create mode 100644 gcc/testsuite/g++.dg/modules/pr120040_b.C create mode 100644 gcc/testsuite/g++.dg/modules/src-loc-1.h create mode 100644 gcc/testsuite/g++.dg/modules/src-loc-1_a.H create mode 100644 gcc/testsuite/g++.dg/modules/src-loc-1_b.C create mode 100644 gcc/testsuite/g++.dg/modules/src-loc-1_c.C create mode 100644 gcc/testsuite/g++.dg/modules/ubsan-1_a.C create mode 100644 gcc/testsuite/g++.dg/modules/ubsan-1_b.C create mode 100644 gcc/testsuite/g++.dg/ubsan/module-1-aux.cc create mode 100644 gcc/testsuite/g++.dg/ubsan/module-1.C -- 2.47.0