Hi all,

IT blocks in ARMv8 AArch32 Thumb mode are somewhat restricted.
They cannot contain more than one instruction, and that one instruction
has to be a 16-bit variant of a restricted subset of instructions.
ARMv7 IT blocks that don't fit in this category are allowed by ARMv8,
but are deprecated.

This patch is the first in a series to get gcc to stop generating the
deprecated forms for ARMv8.
It creates a command line option, -mrestrict-it, that can be used to
enable this new behaviour for earlier architecture variants, as well as
switch it off for ARMv8 (via -mno-restrict-it).
The new behaviour is controlled by a new variable, arm_restrict_it. We
stop the merging of cond_execs into multi-instruction IT blocks when
arm_restrict_it is enabled.

Bootstrapped on a Cortex-A15, regtested arm-none-eabi on qemu and a
model.

Ok for trunk?

Thanks,
Kyrill

2013-06-04  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

        * config/arm/arm.c (MAX_INSN_PER_IT_BLOCK): New macro.
        (arm_option_override): Override arm_restrict_it where
appropriate.
        (thumb2_final_prescan_insn): Use MAX_INSN_PER_IT_BLOCK.
        * config/arm/arm.opt (mrestrict-it): New command-line option.

Attachment: 01-options.patch
Description: Binary data

Reply via email to