This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, i386] Fix `misaligned_operand' predicate.
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: Kirill Yukhin <kirill dot yukhin at gmail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 24 Jun 2015 16:57:32 +0200
- Subject: Re: [PATCH, i386] Fix `misaligned_operand' predicate.
- Authentication-results: sourceware.org; auth=none
- References: <20150624143542 dot GD39459 at msticlxl57 dot ims dot intel dot com>
On Wed, Jun 24, 2015 at 4:35 PM, Kirill Yukhin <kirill.yukhin@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.