aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/tree.c3
2 files changed, 8 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 48f39f4..668dd5e 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2011-06-06 Jason Merrill <jason@redhat.com>
+
+ PR c++/49134
+ * tree.c (build_target_expr): Deal with ARM ABI tweaks.
+
2011-06-04 Jonathan Wakely <jwakely.gcc@gmail.com>
* init.c (build_delete): Warn when deleting type with non-virtual
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 11e195e..025fe2d 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -292,6 +292,9 @@ build_target_expr (tree decl, tree value, tsubst_flags_t complain)
#ifdef ENABLE_CHECKING
gcc_assert (VOID_TYPE_P (TREE_TYPE (value))
|| TREE_TYPE (decl) == TREE_TYPE (value)
+ /* On ARM ctors return 'this'. */
+ || (TREE_CODE (TREE_TYPE (value)) == POINTER_TYPE
+ && TREE_CODE (value) == CALL_EXPR)
|| useless_type_conversion_p (TREE_TYPE (decl),
TREE_TYPE (value)));
#endif