[AArch64] Fix predicate and constraint mismatch in logical atomic operations

Michael Collison michael.collison@linaro.org
Thu Sep 25 03:45:00 GMT 2014

On certain patterns in atomics.md the constraint 'n' is used in 
combination with the predicate atomic_op_operand. The constraint is too 
general and allows constants that are disallowed by the predicate. This 
causes an ICE In final_scan_insn when the insn cannot be split because 
the constraint and predicate do not match.

Tested on aarch64-none-elf, aarch64-linux-gnu. Additionally the 
originally reporter of the bug, (doko@ubuntu.com), applied the patch and 
successfully bootstrapped and tested with no regressions.

2014-09-23  Michael Collison <michael.collison@linaro.org>

     * config/aarch64/iterators.md (lconst_atomic): New mode attribute to
     support constraints for CONST_INT in atomic operations.
     * config/aarch64/atomics.md
     (atomic_<atomic_optab><mode>): Use lconst_atomic constraint.
     (atomic_nand<mode>): Likewise.
     (atomic_fetch_<atomic_optab><mode>): Likewise.
     (atomic_fetch_nand<mode>): Likewise.
     (atomic_<atomic_optab>_fetch<mode>): Likewise.
     (atomic_nand_fetch<mode>): Likewise.

Michael Collison
Linaro Toolchain Working Group

-------------- next part --------------
A non-text attachment was scrubbed...
Name: atomics-constraint.patch
Type: text/x-patch
Size: 2859 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20140925/462651a1/attachment.bin>

More information about the Gcc-patches mailing list