OSDN Git Service

2009-07-01 Paolo Bonzini <bonzini@gnu.org>
authorbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jul 2009 11:50:12 +0000 (11:50 +0000)
committerbonzini <bonzini@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jul 2009 11:50:12 +0000 (11:50 +0000)
* expr.c (expand_expr_real_1): Reinstate fallthrough to
TRUTH_ANDIF_EXPR if do_store_flag returns NULL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149136 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/expr.c

index 0b58daf..5e0e00d 100644 (file)
@@ -1,3 +1,8 @@
+2009-07-01  Paolo Bonzini  <bonzini@gnu.org>
+
+       * expr.c (expand_expr_real_1): Reinstate fallthrough to
+       TRUTH_ANDIF_EXPR if do_store_flag returns NULL.
+
 2009-07-01  Maciej W. Rozycki  <macro@linux-mips.org>
 
        * config/vax/vax.h (TARGET_BSD_DIVMOD): New macro.  Set to 1.
index d390b0a..b3cd2b1 100644 (file)
@@ -9109,8 +9109,11 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
       temp = do_store_flag (exp,
                            modifier != EXPAND_STACK_PARM ? target : NULL_RTX,
                            tmode != VOIDmode ? tmode : mode);
-      gcc_assert (temp);
-      return temp;
+      if (temp)
+       return temp;
+
+      /* Use a compare and a jump for BLKmode comparisons, or for function
+        type comparisons is HAVE_canonicalize_funcptr_for_compare.  */
 
       /* Although TRUTH_{AND,OR}IF_EXPR aren't present in GIMPLE, they
         are occassionally created by folding during expansion.  */