diff options
| author | sayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-04-20 02:52:17 +0000 |
|---|---|---|
| committer | sayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-04-20 02:52:17 +0000 |
| commit | cd849cb31518abb46226ec0fac7210aeae652046 (patch) | |
| tree | 98800796caec019d63ae98c02488d90a49c8e754 | |
| parent | 7db6fb5cb62f02ea5591a6697736701cec8e6ad4 (diff) | |
| download | ppe42-gcc-cd849cb31518abb46226ec0fac7210aeae652046.tar.gz ppe42-gcc-cd849cb31518abb46226ec0fac7210aeae652046.zip | |
PR middle-end/14531
* class.c (build_base_path): Call fold whilst building the NULL
pointer check expression trees.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@80877 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
| -rw-r--r-- | gcc/cp/class.c | 9 |
2 files changed, 11 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a3a2c6abea5..2d691dcfced 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2004-04-19 Roger Sayle <roger@eyesopen.com> + + PR middle-end/14531 + * class.c (build_base_path): Call fold whilst building the NULL + pointer check expression trees. + 2004-04-15 Bryce McKinlay <mckinlay@redhat.com> * init.c (build_new_1): Don't use type size argument for Java diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 6188f5e1cbf..c78482c9918 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -290,7 +290,8 @@ build_base_path (enum tree_code code, expr = save_expr (expr); if (want_pointer && !nonnull) - null_test = build (EQ_EXPR, boolean_type_node, expr, integer_zero_node); + null_test = fold (build2 (NE_EXPR, boolean_type_node, + expr, integer_zero_node)); offset = BINFO_OFFSET (binfo); @@ -365,9 +366,9 @@ build_base_path (enum tree_code code, expr = build_indirect_ref (expr, NULL); if (null_test) - expr = build (COND_EXPR, target_type, null_test, - build1 (NOP_EXPR, target_type, integer_zero_node), - expr); + expr = fold (build3 (COND_EXPR, target_type, null_test, expr, + fold (build1 (NOP_EXPR, target_type, + integer_zero_node)))); return expr; } |

