diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2025-03-08 16:13:41 +0100 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2025-03-08 22:47:18 +0100 |
commit | 90d9cdfa82d9a8d63e35d928e335719a495c79e3 (patch) | |
tree | d745bffa75e7300b3bc058577b5f31ac71532f91 /gcc/tree-ssa-phiopt.cc | |
parent | 613f8ddbe3d7da63d827e588bf0333813c184b8a (diff) | |
download | gcc-90d9cdfa82d9a8d63e35d928e335719a495c79e3.zip gcc-90d9cdfa82d9a8d63e35d928e335719a495c79e3.tar.gz gcc-90d9cdfa82d9a8d63e35d928e335719a495c79e3.tar.bz2 |
Fix regression with -Wexternal-argument-mismatch.
The attached patch fixes an ICE regresseion where undo state was not
handled properly when generating formal from actual arguments, which
occurred under certain conditions with the newly introduced
-Wexternal-argument-mismatch option.
The fix is simple: When we are generating these symbols, we no
longer need to undo anything, so we can just remove them.
I had considered adding an extra optional argument, but decided
against it on code clarity grounds.
While looking at the code, I also saw that a member of gfc_symbol
introduced with my patch should be a bitfield of width 1.
gcc/fortran/ChangeLog:
PR fortran/119157
* gfortran.h (gfc_symbol): Make ext_dummy_arglist_mismatch a
one-bit bitfield
(gfc_pop_undo_symbol): Declare prototype.
* symbol.cc (gfc_pop_undo_symbol): New function.
* interface.cc (gfc_get_formal_from_actual_arglist): Call it
for artificially introduced formal variables.
gcc/testsuite/ChangeLog:
PR fortran/119157
* gfortran.dg/interface_57.f90: New test.
Diffstat (limited to 'gcc/tree-ssa-phiopt.cc')
0 files changed, 0 insertions, 0 deletions