aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/typeck.c13
2 files changed, 15 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 389b9fc..04671bd 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2001-03-05 Andrew Haley <aph@redhat.com>
+
+ * typeck.c (convert_arguments): Don't do ellipsis conversion for
+ __built_in_constant_p.
+
2001-03-02 Nathan Sidwell <nathan@codesourcery.com>
* typeck.c (build_static_cast): Allow enum to enum conversions
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 8b87342..d572182 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -3207,9 +3207,16 @@ convert_arguments (typelist, values, fndecl, flags)
if (TREE_CODE (TREE_TYPE (val)) == REFERENCE_TYPE)
val = convert_from_reference (val);
- result = tree_cons (NULL_TREE,
- convert_arg_to_ellipsis (val),
- result);
+ if (DECL_BUILT_IN (fndecl)
+ && DECL_FUNCTION_CODE (fndecl) == BUILT_IN_CONSTANT_P)
+ /* Don't do ellipsis conversion for __built_in_constant_p
+ as this will result in spurious warnings for non-POD
+ types. */
+ val = require_complete_type (val);
+ else
+ val = convert_arg_to_ellipsis (val);
+
+ result = tree_cons (NULL_TREE, val, result);
}
if (typetail)