re PR c++/50454 (Unexpected problems with -pedantic / -pedantic-errors and __int128 and unsigned __int128 specializations)
/cp 2011-09-21 Paolo Carlini <paolo.carlini@oracle.com> PR c++/50454 * decl.c (grokdeclarator): Consistently handle both __int128 and unsigned __int128 with -pedantic; suppress diagnostic in system headers. /testsuite 2011-09-21 Paolo Carlini <paolo.carlini@oracle.com> PR c++/50454 * g++.dg/ext/int128-1.C: New. * g++.dg/ext/int128-2.C: Likewise. * g++.dg/ext/int128-2.h: Likewise. From-SVN: r179042
This commit is contained in:
parent
e3e285857d
commit
086f3b9a02
|
@ -1,3 +1,10 @@
|
|||
2011-09-21 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/50454
|
||||
* decl.c (grokdeclarator): Consistently handle both __int128
|
||||
and unsigned __int128 with -pedantic; suppress diagnostic in
|
||||
system headers.
|
||||
|
||||
2011-09-20 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* cp-tree.h (DECL_TEMPLOID_INSTANTIATION): New.
|
||||
|
|
|
@ -8640,6 +8640,18 @@ grokdeclarator (const cp_declarator *declarator,
|
|||
|
||||
ctype = NULL_TREE;
|
||||
|
||||
if (explicit_int128)
|
||||
{
|
||||
if (int128_integer_type_node == NULL_TREE)
|
||||
{
|
||||
error ("%<__int128%> is not supported by this target");
|
||||
explicit_int128 = false;
|
||||
}
|
||||
else if (pedantic && ! in_system_header)
|
||||
pedwarn (input_location, OPT_pedantic,
|
||||
"ISO C++ does not support %<__int128%> for %qs", name);
|
||||
}
|
||||
|
||||
/* Now process the modifiers that were specified
|
||||
and check for invalid combinations. */
|
||||
|
||||
|
@ -8663,8 +8675,6 @@ grokdeclarator (const cp_declarator *declarator,
|
|||
error ("%<signed%> and %<unsigned%> specified together for %qs", name);
|
||||
else if (longlong && TREE_CODE (type) != INTEGER_TYPE)
|
||||
error ("%<long long%> invalid for %qs", name);
|
||||
else if (explicit_int128 && TREE_CODE (type) != INTEGER_TYPE)
|
||||
error ("%<__int128%> invalid for %qs", name);
|
||||
else if (long_p && TREE_CODE (type) == REAL_TYPE)
|
||||
error ("%<long%> invalid for %qs", name);
|
||||
else if (short_p && TREE_CODE (type) == REAL_TYPE)
|
||||
|
@ -8695,22 +8705,6 @@ grokdeclarator (const cp_declarator *declarator,
|
|||
if (flag_pedantic_errors)
|
||||
ok = 0;
|
||||
}
|
||||
if (explicit_int128)
|
||||
{
|
||||
if (int128_integer_type_node == NULL_TREE)
|
||||
{
|
||||
error ("%<__int128%> is not supported by this target");
|
||||
ok = 0;
|
||||
}
|
||||
else if (pedantic)
|
||||
{
|
||||
pedwarn (input_location, OPT_pedantic,
|
||||
"ISO C++ does not support %<__int128%> for %qs",
|
||||
name);
|
||||
if (flag_pedantic_errors)
|
||||
ok = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Discard the type modifiers if they are invalid. */
|
||||
|
@ -8721,7 +8715,6 @@ grokdeclarator (const cp_declarator *declarator,
|
|||
long_p = false;
|
||||
short_p = false;
|
||||
longlong = 0;
|
||||
explicit_int128 = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2011-09-21 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/50454
|
||||
* g++.dg/ext/int128-1.C: New.
|
||||
* g++.dg/ext/int128-2.C: Likewise.
|
||||
* g++.dg/ext/int128-2.h: Likewise.
|
||||
|
||||
2011-09-20 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR testsuite/50469
|
||||
|
@ -11,9 +18,9 @@
|
|||
PR c++/50442
|
||||
* g++.dg/overload/ref-conv1.C: New.
|
||||
|
||||
2011-09-20 Roberto Agostino Vitillo <ravitillo@lbl.gov>
|
||||
2011-09-20 Roberto Agostino Vitillo <ravitillo@lbl.gov>
|
||||
|
||||
* g++.dg/other/final1.C: new test
|
||||
* g++.dg/other/final1.C: New.
|
||||
|
||||
2011-09-20 Ira Rosen <ira.rosen@linaro.org>
|
||||
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
// PR c++/50454
|
||||
// { dg-do compile { target int128 } }
|
||||
|
||||
template<typename T>
|
||||
struct limits;
|
||||
|
||||
template<>
|
||||
struct limits<__int128> { }; // { dg-error "does not support" }
|
||||
|
||||
template<>
|
||||
struct limits<unsigned __int128> { }; // { dg-error "does not support" }
|
|
@ -0,0 +1,4 @@
|
|||
// PR c++/50454
|
||||
// { dg-do compile { target int128 } }
|
||||
|
||||
#include "int128-2.h"
|
|
@ -0,0 +1,10 @@
|
|||
#pragma GCC system_header
|
||||
|
||||
template<typename T>
|
||||
struct limits;
|
||||
|
||||
template<>
|
||||
struct limits<__int128> { };
|
||||
|
||||
template<>
|
||||
struct limits<unsigned __int128> { };
|
Loading…
Reference in New Issue