On 05/05/2016 09:02 AM, Eric Botcazou wrote:
When scanning addresses inside a debug insn, we shouldn't use normal
base/index classes. This shows as a compare-debug issue on Alpha, where
INDEX_REG_CLASS is NO_REGS, and this prevented a chain from being
renamed with debugging turned on.
Uros has reported that this patch resolves the issues he was seeing on
Alpha, and I've bootstrapped and tested it on x86_64-linux. Ok?
OK, thanks. It might worthwhile to add a sentence somewhere (maybe at the end
of the head comment of the file) documenting the special treatment applied to
debug insns during the pass.
Committed with the extra hunk below.
Bernd
@@ -61,7 +61,10 @@
5. If a renaming register has been found, it is substituted in
the chain.
Targets can parameterize the pass by specifying a preferred class
for the
- renaming register for a given (super)class of registers to be
renamed. */
+ renaming register for a given (super)class of registers to be renamed.
+
+ DEBUG_INSNs are treated specially, in particular registers occurring
inside
+ them are treated as requiring ALL_REGS as a class. */
#if HOST_BITS_PER_WIDE_INT <= MAX_RECOG_OPERANDS
#error "Use a different bitmap implementation for untracked_operands."