[PATCH] [ARM64] Fix the misleading diagnostic on bad extend amount of reg+reg addressing mode.
Tim Northover
t.p.northover at gmail.com
Tue May 13 00:20:26 PDT 2014
Hi again,
> If you really want more accurate diagnostics then we need to do in some
> way that actually improves the code quality, not just the diagnostic quality.
Bradley's been encountering similar issues with load/store
diagnostics, and has mentioned that a large part of the problem is
that so much complexity is put into a single conglomerate operand.
AArch64 has split up the load/store instructions much more than ARM64,
allowing more focussed diagnostics. I think that went too far (the
patterns are an unmaintainable mess), but some middle ground might
give us both a neater assembler and more focussed diagnostics when
things go wrong.
>From what I remember, the reason AArch64 had to split things up as
much as it did is that once you go beyond a single operand that can be
handled by a ComplexPat, you need to split *everything* up to be able
to use the instructions. This multiplies the number of instructions
greatly.
Very similar concerns (but on a slightly simpler level) apply to the
register-offset arithmetic & logical operations. I'm wondering if a
more flexible ComplexPatFrag, capable of distributing its results to
more than a single Operand, might allow us the best of both worlds:
few instructions, but each with many operands so that the last failure
point actually gives us useful information.
I think I might try to implement that today (only on arith/logical for
now though; load/store would be a big project). I'll let you know how
it goes.
Cheers.
Tim.
(duplicate to llvm-commits).
More information about the llvm-commits
mailing list