OSDN Git Service

PR middle-end/14531
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 Apr 2004 02:52:17 +0000 (02:52 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 Apr 2004 02:52:17 +0000 (02:52 +0000)
* 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

gcc/cp/ChangeLog
gcc/cp/class.c

index a3a2c6a..2d691dc 100644 (file)
@@ -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
index 6188f5e..c78482c 100644 (file)
@@ -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;
 }