except.c (expand_throw): Make sure first argument to __cp_push_exception is of type `void*' to avoid...
* except.c (expand_throw): Make sure first argument to __cp_push_exception is of type `void*' to avoid spurious error messages. From-SVN: r23639
This commit is contained in:
parent
93d9a2ebd8
commit
bbeeb2b020
3 changed files with 23 additions and 4 deletions
|
@ -1,3 +1,9 @@
|
|||
1998-11-13 Mark Mitchell <mark@markmitchell.com>
|
||||
|
||||
* except.c (expand_throw): Make sure first argument to
|
||||
__cp_push_exception is of type `void*' to avoid spurious error
|
||||
messages.
|
||||
|
||||
1998-11-11 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
* pt.c (try_one_overload): Take orig_targs again. Only check for
|
||||
|
|
|
@ -998,10 +998,7 @@ expand_throw (exp)
|
|||
}
|
||||
|
||||
if (TREE_CODE (TREE_TYPE (exp)) == POINTER_TYPE)
|
||||
{
|
||||
throw_type = build_eh_type (exp);
|
||||
exp = build_reinterpret_cast (ptr_type_node, exp);
|
||||
}
|
||||
throw_type = build_eh_type (exp);
|
||||
else
|
||||
{
|
||||
tree object, ptr;
|
||||
|
@ -1075,6 +1072,10 @@ expand_throw (exp)
|
|||
exp = ptr;
|
||||
}
|
||||
|
||||
/* Cast EXP to `void *' so that it will match the prototype for
|
||||
__cp_push_exception. */
|
||||
exp = build_reinterpret_cast (ptr_type_node, exp);
|
||||
|
||||
if (cleanup == NULL_TREE)
|
||||
{
|
||||
cleanup = build_int_2 (0, 0);
|
||||
|
|
12
gcc/testsuite/g++.old-deja/g++.eh/throw1.C
Normal file
12
gcc/testsuite/g++.old-deja/g++.eh/throw1.C
Normal file
|
@ -0,0 +1,12 @@
|
|||
// Build don't link:
|
||||
|
||||
void athrow(const int & e) throw(int)
|
||||
{
|
||||
throw e;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
athrow(int());
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Reference in a new issue