Hello! We have to check natural alignment of the operand in misaligned_operand predicate. This predicate is used to check SSE memory operands for alignment, when movaps instead of movups can be used. This change makes predicate independent of BIGGEST_ALIGNMENT setting.
2015-11-13 Uros Bizjak <ubiz...@gmail.com> * config/i386/predicates.md (misaligned_operand): Return true if operand is aligned to less than its natural alignmnet. Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}, committed to mainline SVN. Uros. Index: config/i386/predicates.md =================================================================== --- config/i386/predicates.md (revision 230213) +++ config/i386/predicates.md (working copy) @@ -1364,10 +1364,11 @@ (define_predicate "absneg_operator" (match_code "abs,neg")) -;; Return true if OP is misaligned memory operand +;; Return true if OP is a memory operand, aligned to +;; less than its natural alignment. (define_predicate "misaligned_operand" (and (match_code "mem") - (match_test "MEM_ALIGN (op) < GET_MODE_ALIGNMENT (mode)"))) + (match_test "MEM_ALIGN (op) < GET_MODE_BITSIZE (mode)"))) ;; Return true if OP is a emms operation, known to be a PARALLEL.