Hi!

Small optimization to avoid testing modifier multiple times.

2023-08-09  Jakub Jelinek  <ja...@redhat.com>

        PR c/102989
        * expr.cc (expand_expr_real_1) <case MEM_REF>: Add an early return for
        EXPAND_WRITE or EXPAND_MEMORY modifiers to avoid testing it multiple
        times.

--- gcc/expr.cc.jj      2023-08-08 15:55:06.499164554 +0200
+++ gcc/expr.cc 2023-08-08 15:59:36.594382141 +0200
@@ -11248,17 +11248,15 @@ expand_expr_real_1 (tree exp, rtx target
        set_mem_addr_space (temp, as);
        if (TREE_THIS_VOLATILE (exp))
          MEM_VOLATILE_P (temp) = 1;
-       if (modifier != EXPAND_WRITE
-           && modifier != EXPAND_MEMORY
-           && !inner_reference_p
+       if (modifier == EXPAND_WRITE || modifier == EXPAND_MEMORY)
+         return temp;
+       if (!inner_reference_p
            && mode != BLKmode
            && align < GET_MODE_ALIGNMENT (mode))
          temp = expand_misaligned_mem_ref (temp, mode, unsignedp, align,
                                            modifier == EXPAND_STACK_PARM
                                            ? NULL_RTX : target, alt_rtl);
-       if (reverse
-           && modifier != EXPAND_MEMORY
-           && modifier != EXPAND_WRITE)
+       if (reverse)
          temp = flip_storage_order (mode, temp);
        return temp;
       }

        Jakub

Reply via email to