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 <rd...@linux.ibm.com>
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.

Reply via email to