aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-fold.c
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2012-04-13 19:57:21 +0200
committerMartin Jambor <jamborm@gcc.gnu.org>2012-04-13 19:57:21 +0200
commit8e8483e6dc3ca09f75d6e6d33f4a22fae6d7ff75 (patch)
tree4b82dc76ec1b5f05f431a6f3c536bf936d7b5ae8 /gcc/gimple-fold.c
parent70a6950958a6a5b902744b40786f4b34af9b6bc7 (diff)
downloadgcc-8e8483e6dc3ca09f75d6e6d33f4a22fae6d7ff75.zip
gcc-8e8483e6dc3ca09f75d6e6d33f4a22fae6d7ff75.tar.gz
gcc-8e8483e6dc3ca09f75d6e6d33f4a22fae6d7ff75.tar.bz2
re PR middle-end/52939 (ice in gimple_get_virt_method_for_binfo with -O3)
2012-04-13 Martin Jambor <mjambor@suse.cz> PR middle-end/52939 * gimple-fold.c (gimple_get_virt_method_for_binfo): Bail out if fold_ctor_reference returns a zero constant. * testsuite/g++.dg/ipa/pr52939.C: New test. From-SVN: r186428
Diffstat (limited to 'gcc/gimple-fold.c')
-rw-r--r--gcc/gimple-fold.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index 0ea5d56..049da57 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -3087,7 +3087,7 @@ gimple_get_virt_method_for_binfo (HOST_WIDE_INT token, tree known_binfo)
offset += token * size;
fn = fold_ctor_reference (TREE_TYPE (TREE_TYPE (v)), DECL_INITIAL (v),
offset, size);
- if (!fn)
+ if (!fn || integer_zerop (fn))
return NULL_TREE;
gcc_assert (TREE_CODE (fn) == ADDR_EXPR
|| TREE_CODE (fn) == FDESC_EXPR);