re PR c++/28349 (ICE with "undefined" va_arg and references)
2006-08-29 Andrew Pinski <pinskia@physics.uc.edu> PR c++/28349 * testsuite/g++.dg/warn/var-args1.C: New test. 2006-08-29 Andrew Pinski <pinskia@physics.uc.edu> PR C++/28349 * call.c (build_x_va_arg): Remove the reference type from the type before creating the pointer type. From-SVN: r116577
This commit is contained in:
parent
1bdd6b682b
commit
a2ef097954
|
@ -1,3 +1,9 @@
|
|||
2006-08-29 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR C++/28349
|
||||
* call.c (build_x_va_arg): Remove the reference type
|
||||
from the type before creating the pointer type.
|
||||
|
||||
2006-08-29 J"orn Rennecke <joern.rennecke@st.com>
|
||||
|
||||
PR c++/28139
|
||||
|
|
|
@ -4544,10 +4544,12 @@ build_x_va_arg (tree expr, tree type)
|
|||
|
||||
if (! pod_type_p (type))
|
||||
{
|
||||
/* Remove reference types so we don't ICE later on. */
|
||||
tree type1 = non_reference (type);
|
||||
/* Undefined behavior [expr.call] 5.2.2/7. */
|
||||
warning (0, "cannot receive objects of non-POD type %q#T through %<...%>; "
|
||||
"call will abort at runtime", type);
|
||||
expr = convert (build_pointer_type (type), null_node);
|
||||
expr = convert (build_pointer_type (type1), null_node);
|
||||
expr = build2 (COMPOUND_EXPR, TREE_TYPE (expr),
|
||||
call_builtin_trap (), expr);
|
||||
expr = build_indirect_ref (expr, NULL);
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2006-08-29 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR c++/28349
|
||||
* testsuite/g++.dg/warn/var-args1.C: New test.
|
||||
|
||||
2006-08-29 Steven G. Kargl <kargls@comcast.net>
|
||||
|
||||
PR fortran/28866
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
/* { dg-do compile } */
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
void foo(int, ...)
|
||||
{
|
||||
va_list va;
|
||||
int i;
|
||||
i = va_arg(va, int&); /* { dg-warning "cannot receive objects" } */
|
||||
}
|
||||
|
Loading…
Reference in New Issue