aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/backend
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2023-10-20 12:20:37 -0400
committerNathan Sidwell <nathan@acm.org>2023-10-20 16:24:49 -0400
commit084addf8a700fab9222d4127ab8524920d0ca481 (patch)
tree1ce1f519ced10494d25476a8a194e7e2ed2d124a /gcc/rust/backend
parent7069ea909f5292a17d22e5e68218373186820d29 (diff)
downloadgcc-084addf8a700fab9222d4127ab8524920d0ca481.zip
gcc-084addf8a700fab9222d4127ab8524920d0ca481.tar.gz
gcc-084addf8a700fab9222d4127ab8524920d0ca481.tar.bz2
c++: Constructor streaming [PR105322]
An expresion node's type is streamed after the expression's operands, because the type can come from some aspect of an operand (for instance decltype and noexcept). There's a comment in the code explaining that. But that doesn't work for constructors, which can directly reference components of their type (eg FIELD_DECLS). If this is a type-introducing CONSTRUCTOR, we need to ensure the type has been streamed first. So move CONSTRUCTOR stream to after the type streaming. The reason things like COMPONENT_REF work is that they stream their first operand first, and that introduces the type that their second operand looks up a field in. gcc/cp/ PR c++/105322 * module.cc (trees_out::core_vals): Stream CONSTRUCTOR operands after the type. (trees_in::core_vals): Likewise. gcc/testsuite/ * g++.dg/modules/decltype-1_a.C: New. * g++.dg/modules/decltype-1_b.C: New. * g++.dg/modules/lambda-5_a.C: New. * g++.dg/modules/lambda-5_b.C: New.
Diffstat (limited to 'gcc/rust/backend')
0 files changed, 0 insertions, 0 deletions