From: Jason Merrill Date: Thu, 20 Apr 2023 03:25:39 +0000 (-0400) Subject: Revert "c++: signed __int128_t [PR108099]" X-Git-Tag: releases/gcc-12.3.0~58 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0c97fe08e46e8ccbd6a6346b62a8df78764014ac;p=thirdparty%2Fgcc.git Revert "c++: signed __int128_t [PR108099]" Given the remaining issues even after these patches, let's leave this bug alone on the GCC 12 branch for now. This reverts commit 32955c1c2246aa336d3fd2423c32546c39a6ca30. This reverts commit 7b30f13b904f137c77e5180357af7917a3b47af0. --- diff --git a/gcc/cp/decl.cc b/gcc/cp/decl.cc index f514377dd424..ab9a009fb7e5 100644 --- a/gcc/cp/decl.cc +++ b/gcc/cp/decl.cc @@ -12300,18 +12300,11 @@ grokdeclarator (const cp_declarator *declarator, { if (typedef_decl) { - pedwarn (loc, OPT_Wpedantic, "%qs specified with %qD", - key, typedef_decl); + pedwarn (loc, OPT_Wpedantic, "%qs specified with %qT", + key, type); ok = !flag_pedantic_errors; - if (is_typedef_decl (typedef_decl)) - { - type = DECL_ORIGINAL_TYPE (typedef_decl); - typedef_decl = NULL_TREE; - } - else - /* PR108099: __int128_t comes from c_common_nodes_and_builtins, - and is not built as a typedef. */ - type = TREE_TYPE (typedef_decl); + type = DECL_ORIGINAL_TYPE (typedef_decl); + typedef_decl = NULL_TREE; } else if (declspecs->decltype_p) error_at (loc, "%qs specified with %", key); diff --git a/gcc/testsuite/g++.dg/ext/int128-7.C b/gcc/testsuite/g++.dg/ext/int128-7.C deleted file mode 100644 index bf5e8c40a4b2..000000000000 --- a/gcc/testsuite/g++.dg/ext/int128-7.C +++ /dev/null @@ -1,4 +0,0 @@ -// PR c++/108099 -// { dg-do compile { target { c++11 && int128 } } } - -using i128 = signed __int128_t; // { dg-error "specified with" } diff --git a/gcc/testsuite/g++.dg/ext/int128-8.C b/gcc/testsuite/g++.dg/ext/int128-8.C deleted file mode 100644 index 7e909d50873a..000000000000 --- a/gcc/testsuite/g++.dg/ext/int128-8.C +++ /dev/null @@ -1,24 +0,0 @@ -// PR c++/108099 -// { dg-do compile { target { c++11 && int128 } } } -// { dg-options "" } - -using u128 = unsigned __int128_t; -using s128 = signed __int128_t; -template struct integral_constant { - static constexpr T value = v; -}; -typedef integral_constant false_type; -typedef integral_constant true_type; -template -struct is_same : false_type {}; -template -struct is_same : true_type {}; -static_assert (is_same <__int128, s128>::value, ""); -static_assert (is_same ::value, ""); -static_assert (is_same <__int128_t, s128>::value, ""); -static_assert (is_same ::value, ""); // { dg-bogus "" "" { xfail *-*-* } } -static_assert (is_same <__uint128_t, u128>::value, ""); // { dg-bogus "" "" { xfail *-*-* } } -static_assert (sizeof (s128) == sizeof (__int128), ""); -static_assert (sizeof (u128) == sizeof (unsigned __int128), ""); -static_assert (s128(-1) < 0, ""); -static_assert (u128(-1) > 0, "");