On Wed, Jun 24, 2015 at 4:35 PM, Kirill Yukhin <kirill.yuk...@gmail.com> wrote: > Hello, > > Patch in the bottom uses proper check of valid memory > in `misaligned_operand' predicate. > > gcc/ > * config/i386/predicates.md (misaligned_operand): Properly > check if operand is memory. > > Bootstrapped and reg-tested. > > Is it ok for trunk?
I have reviewed the uses of misaligned_operand predicate, and AFAICS they always operate after the check for "memory_operand". So, there is no point to re-check it with full memory_operand predicate. Please introduce another predicate for legitimate misaligned memory operand, perhaps named "misaligned_memory_operand". Uros. > -- > Thanks, K > > diff --git a/gcc/config/i386/predicates.md b/gcc/config/i386/predicates.md > index 4e45246..7d6ae77 100644 > --- a/gcc/config/i386/predicates.md > +++ b/gcc/config/i386/predicates.md > @@ -1365,7 +1365,7 @@ > > ;; Return true if OP is misaligned memory operand > (define_predicate "misaligned_operand" > - (and (match_code "mem") > + (and (match_operand 0 "memory_operand") > (match_test "MEM_ALIGN (op) < GET_MODE_ALIGNMENT (mode)"))) > > ;; Return true if OP is a emms operation, known to be a PARALLEL.