diff options
author | Jason Merrill <jason@redhat.com> | 2008-03-17 22:52:34 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2008-03-17 22:52:34 -0400 |
commit | 3d574e5b1f7606112e6b3a54342b651a40fb4539 (patch) | |
tree | 306f38a313a14d6dd697eed309e8d10e52cc9790 /gcc/cp | |
parent | a5728e4006219546ce97e0db987377ef386557fa (diff) | |
download | gcc-3d574e5b1f7606112e6b3a54342b651a40fb4539.zip gcc-3d574e5b1f7606112e6b3a54342b651a40fb4539.tar.gz gcc-3d574e5b1f7606112e6b3a54342b651a40fb4539.tar.bz2 |
re PR c++/35548 (g++ 4.3 miscompile this simple program)
PR c++/35548
* call.c (reference_binding): Check LOOKUP_NO_TEMP_BIND when binding
a temp directly to a reference as per DR391.
From-SVN: r133299
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/call.c | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c73fd6b..d2ae223 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2008-03-17 Jason Merrill <jason@redhat.com> + + PR c++/35548 + * call.c (reference_binding): Check LOOKUP_NO_TEMP_BIND when binding + a temp directly to a reference as per DR391. + 2008-03-12 Richard Guenther <rguenther@suse.de> PR c++/35469 diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 2ee8237..3677262 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -1145,7 +1145,8 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags) const and rvalue references to rvalues of compatible class type. */ if (compatible_p && (lvalue_p - || ((CP_TYPE_CONST_NON_VOLATILE_P(to) || TYPE_REF_IS_RVALUE (rto)) + || (!(flags & LOOKUP_NO_TEMP_BIND) + && (CP_TYPE_CONST_NON_VOLATILE_P(to) || TYPE_REF_IS_RVALUE (rto)) && CLASS_TYPE_P (from)))) { /* [dcl.init.ref] |