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:
parent
6010fae752
commit
1466cf1a6b
|
@ -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>
|
2008-07-02 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
* Make-lang.in (cp/typeck2.o): Add $(REAL_H) dependency.
|
* Make-lang.in (cp/typeck2.o): Add $(REAL_H) dependency.
|
||||||
|
|
|
@ -5418,6 +5418,13 @@ build_cxx_call (tree fn, int nargs, tree *argarray)
|
||||||
&& cfun)
|
&& cfun)
|
||||||
cp_function_chain->can_throw = 1;
|
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
|
/* Some built-in function calls will be evaluated at compile-time in
|
||||||
fold (). */
|
fold (). */
|
||||||
fn = fold_if_not_in_template (fn);
|
fn = fold_if_not_in_template (fn);
|
||||||
|
|
|
@ -2887,13 +2887,6 @@ cp_build_function_call (tree function, tree params, tsubst_flags_t complain)
|
||||||
if (nargs < 0)
|
if (nargs < 0)
|
||||||
return error_mark_node;
|
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
|
/* Check for errors in format strings and inappropriately
|
||||||
null parameters. */
|
null parameters. */
|
||||||
check_function_arguments (TYPE_ATTRIBUTES (fntype), nargs, argarray,
|
check_function_arguments (TYPE_ATTRIBUTES (fntype), nargs, argarray,
|
||||||
|
|
|
@ -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>
|
2008-07-02 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* g++.dg/compat/struct-layout-1.exp: Compile generator on build
|
* g++.dg/compat/struct-layout-1.exp: Compile generator on build
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
/* { dg-do compile } */
|
||||||
|
|
||||||
|
void foo()
|
||||||
|
{
|
||||||
|
__builtin_isless (foo, 0); /* { dg-error "non-floating-point arguments" } */
|
||||||
|
}
|
Loading…
Reference in New Issue