re PR c++/36128 (ICE with invalid argument for builtin)

2008-07-02  Richard Guenther  <rguenther@suse.de>

	PR c++/36128
	* typeck.c (cp_build_function_call): Move code to verify
	builtin function arguments ...
	* call.c (build_cxx_call): ... here.

	* g++.dg/other/builtin1.C: New testcase.

From-SVN: r137408
This commit is contained in:
Richard Guenther 2008-07-03 08:18:09 +00:00 committed by Richard Biener
parent 6010fae752
commit 1466cf1a6b
5 changed files with 25 additions and 7 deletions

View File

@ -1,3 +1,10 @@
2008-07-03 Richard Guenther <rguenther@suse.de>
PR c++/36128
* typeck.c (cp_build_function_call): Move code to verify
builtin function arguments ...
* call.c (build_cxx_call): ... here.
2008-07-02 Jason Merrill <jason@redhat.com>
* Make-lang.in (cp/typeck2.o): Add $(REAL_H) dependency.

View File

@ -5418,6 +5418,13 @@ build_cxx_call (tree fn, int nargs, tree *argarray)
&& cfun)
cp_function_chain->can_throw = 1;
/* Check that arguments to builtin functions match the expectations. */
if (fndecl
&& DECL_BUILT_IN (fndecl)
&& DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL
&& !check_builtin_function_arguments (fndecl, nargs, argarray))
return error_mark_node;
/* Some built-in function calls will be evaluated at compile-time in
fold (). */
fn = fold_if_not_in_template (fn);

View File

@ -2887,13 +2887,6 @@ cp_build_function_call (tree function, tree params, tsubst_flags_t complain)
if (nargs < 0)
return error_mark_node;
/* Check that arguments to builtin functions match the expectations. */
if (fndecl
&& DECL_BUILT_IN (fndecl)
&& DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL
&& !check_builtin_function_arguments (fndecl, nargs, argarray))
return error_mark_node;
/* Check for errors in format strings and inappropriately
null parameters. */
check_function_arguments (TYPE_ATTRIBUTES (fntype), nargs, argarray,

View File

@ -1,3 +1,8 @@
2008-07-03 Richard Guenther <rguenther@suse.de>
PR c++/36128
* g++.dg/other/builtin1.C: New testcase.
2008-07-02 Joseph Myers <joseph@codesourcery.com>
* g++.dg/compat/struct-layout-1.exp: Compile generator on build

View File

@ -0,0 +1,6 @@
/* { dg-do compile } */
void foo()
{
__builtin_isless (foo, 0); /* { dg-error "non-floating-point arguments" } */
}