diff options
author | Martin Jambor <mjambor@suse.cz> | 2012-04-13 19:57:21 +0200 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2012-04-13 19:57:21 +0200 |
commit | 8e8483e6dc3ca09f75d6e6d33f4a22fae6d7ff75 (patch) | |
tree | 4b82dc76ec1b5f05f431a6f3c536bf936d7b5ae8 /gcc/gimple-fold.c | |
parent | 70a6950958a6a5b902744b40786f4b34af9b6bc7 (diff) | |
download | gcc-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.c | 2 |
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); |