mips: Fix C++14 vs. C++17 ABI incompatibility on mips64
authorXi Ruoyao <xry111@mengyan1223.wang>
Wed, 6 Apr 2022 12:18:37 +0000 (20:18 +0800)
committerXi Ruoyao <xry111@mengyan1223.wang>
Wed, 6 Apr 2022 14:55:36 +0000 (22:55 +0800)
commiteac5c12c1838d51bf05bd6f30f3f5d7bb760e398
tree385632f55d063bce3fb3099ef66fc288a5213fe8
parent5df29fe79df659617793f955a1ea6c23a0617fe2
mips: Fix C++14 vs. C++17 ABI incompatibility on mips64

This fixes tmpdir-g++.dg-struct-layout-1/{t032,t059} failure.  Clang++
also ignores C++17 empty bases in return values.

gcc/
* config/mips/mips.cc (mips_fpr_return_fields): Ignore
cxx17_empty_base_field_p fields and set an indicator.
(mips_return_in_msb): Adjust for mips_fpr_return_fields change.
(mips_function_value_1): Inform psABI change about C++17 empty
bases.

gcc/testsuite/
* g++.target/mips/cxx17_empty_base.C: New test.
gcc/config/mips/mips.cc
gcc/testsuite/g++.target/mips/cxx17_empty_base.C [new file with mode: 0644]