Message ID | ZNPXsZL3/mmxuDT5@tucnak |
---|---|
State | New |
Headers | show |
Series | GCC _BitInt support [PR102989] | expand |
On Wed, 9 Aug 2023, Jakub Jelinek wrote: > Hi! > > Small optimization to avoid testing modifier multiple times. OK. Richard. > 2023-08-09 Jakub Jelinek <jakub@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 > >
--- 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; }