https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104198
Bug ID: 104198
Summary: [12 regression] ifcvf change breaks 64-bit SPARC
bootstrap
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: ro at gcc dot gnu.org
CC: ebotcazou at gcc dot gnu.org, rdapp at gcc dot gnu.org
Target Milestone: ---
Target: sparcv9-sun-solaris2.11
Between 20220114 (89b4e316a02be9fda3b793a7be871f7c7913cd58) and 20220121
(6f45deb2aed804b185e7dabd2392bfbe14e9bb57)
64-bit Solaris/SPARC bootstrap got broken. The issue can already be seen in
the
first C++ configure test for stage 2 libstdc++:
$ cat conftest.cpp
class Foo
{
public:
Foo (void) { a = 0; }
private:
int a;
};
$ ./xgcc -B./ -c conftest.cpp
../conftest.cpp:6:7: error: function definition does not declare parameters
6 | int a;
| ^
../conftest.cpp: In constructor ‘Foo::Foo()’:
../conftest.cpp:4:16: error: ‘a’ was not declared in this scope
4 | Foo (void) { a = 0; }
| ^
Looks like a miscompilation and completely breaks the libstdc++ build.
A reghunt identified this patch
commit aa8cfe785953a0e87d2472311e1260cd98c605c0
Author: Robin Dapp <[email protected]>
Date: Wed Jan 19 17:36:36 2022 +0100
ifcvt: Try re-using CC for conditional moves.
As the culprit.
32-bit Solaris/SPARC (sparc-sun-solaris2.11) is unaffected, however.