]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
No libstdc++ for GCN
authorThomas Schwinge <thomas@codesourcery.com>
Thu, 13 Apr 2023 06:54:47 +0000 (08:54 +0200)
committerThomas Schwinge <thomas@codesourcery.com>
Wed, 20 Dec 2023 14:08:39 +0000 (15:08 +0100)
Like commit d94fae044da071381b73a2ee8afa874b14fa3820 "No libstdc++ for nvptx"
(2015) and elsewhere.

Based on commit 5f1bed2a7af828103ca23a3546466a23e8dd2f30 (2023-12-16), there
are a ton of progressions (for test cases not actually depending on libstdc++
symbols, obviously):

                    === g++ Summary ===

    # of expected passes            [-178369-]{+189226+}
    # of unexpected failures        [-19880-]{+14089+}
    # of unexpected successes       14
    # of expected failures          [-1684-]{+1685+}
    # of unresolved testcases       [-9820-]{+4837+}
    # of unsupported tests          [-11971-]{+11968+}

..., and only two benign "regressions":

    [-UNSUPPORTED:-]{+FAIL:+} g++.dg/init/array54.C  -std=c++14 {+(test for excess errors)+}
    {+UNRESOLVED: g++.dg/init/array54.C  -std=c++14 compilation failed to produce executable+}
    [Etc.]

    [...]/g++.dg/init/array54.C:5:10: fatal error: atomic: No such file or directory

That's similar to a lof of other test cases intending to '#include' standard
C++/libstdc++ headers; to be addressed in due time.

    PASS: g++.old-deja/g++.pt/const2.C  -std=c++98  at line 5 (test for warnings, line )
    [-PASS:-]{+FAIL:+} g++.old-deja/g++.pt/const2.C  -std=c++98 (test for excess errors)
    [Etc.]

    ld: error: undefined symbol: A<int>::i
    >>> referenced by /tmp/ccqXWCSh.o:(p)

The 'error: undefined symbol' is expected here; maybe should simply in the test
case 'dg-prune-output "referenced by"'?  (This PASSed before, as the
'dg-message "i"' was satisfied by 'ld: error: unable to find library -lstdc++',
eh...)

gcc/
* config/gcn/gcn.h (LIBSTDCXX): Define to "gcc".

gcc/config/gcn/gcn.h

index cb52be7a3a19cb93447cb551bfc3b8f3931c569b..b8f2854d497b0b8b7a93e88afb9aa8f541c1d993 100644 (file)
@@ -836,3 +836,7 @@ enum gcn_builtin_codes
       || M == V2SFmode || M == V2DImode || M == V2DFmode) \
    ? 2 \
    : 1)
+
+/* The C++ front end insists to link against libstdc++ -- which we don't build.
+   Tell it to instead link against the innocuous libgcc.  */
+#define LIBSTDCXX "gcc"