-
- Downloads
d: Fix ICE in finish_thunk (PR97644)
Because this what the upstream reference compiler did, thunks for the D front-end were associated with the class definition, so were forced code-gen even if the target function was extern. This has now been changed so there are now only generated if there is a function definition, fixing the ICE that occurred in PR 97644, which was caused by calling expand_thunk() early. gcc/d/ChangeLog: PR d/97644 * dmd/MERGE: Merge upstream dmd 95044d8e4. * d-target.cc (TargetCPP::thunkMangle): New function. * decl.cc (finish_thunk): Don't force expand thunks for external functions. (make_thunk): Emit thunks only if the function has a definition. Generate correct mangling for thunks to C++ classes. gcc/testsuite/ChangeLog: * gdc.dg/pr92216.d: Update scan-assember.
Showing
- gcc/d/d-target.cc 9 additions, 0 deletionsgcc/d/d-target.cc
- gcc/d/decl.cc 24 additions, 32 deletionsgcc/d/decl.cc
- gcc/d/dmd/MERGE 1 addition, 1 deletiongcc/d/dmd/MERGE
- gcc/d/dmd/cppmangle.c 19 additions, 1 deletiongcc/d/dmd/cppmangle.c
- gcc/d/dmd/mangle.h 1 addition, 0 deletionsgcc/d/dmd/mangle.h
- gcc/d/dmd/target.h 2 additions, 0 deletionsgcc/d/dmd/target.h
- gcc/testsuite/gdc.dg/pr92216.d 2 additions, 2 deletionsgcc/testsuite/gdc.dg/pr92216.d
Loading
Please register or sign in to comment