[Diffusion] rL232374: [hexagon] Distinguish the 'o', 'v', and 'm' inline assembly memory constraints.
Krzysztof Parzyszek
kparzysz at codeaurora.org
Mon Mar 16 10:06:50 PDT 2015
Hi Daniel,
The ConstraintCode that causes the failure is "i". The new Hexagon's
implementation delegates constraint codes other than "m", "o" and "v" to
the generic TLI's implementation, which aborts if the code is not "m".
In the selection DAG builder, the memory constraint is checked if the
type is not "register" or "register class":
case InlineAsm::isOutput: {
if (OpInfo.ConstraintType != TargetLowering::C_RegisterClass &&
OpInfo.ConstraintType != TargetLowering::C_Register) {
// Memory output, or 'other' output (e.g. 'X' constraint).
assert(OpInfo.isIndirect && "Memory output must be indirect
operand");
unsigned ConstraintID =
TLI.getInlineAsmMemConstraint(OpInfo.ConstraintCode);
assert(ConstraintID != InlineAsm::Constraint_Unknown &&
"Failed to convert memory constraint code to constraint
id.");
In case of "i", it will be "C_Other".
-Krzysztof
On 3/16/2015 11:11 AM, Daniel Sanders wrote:
> Hi,
>
> This commit caused failures on the Hexagon builders (e.g. http://lab.llvm.org:8011/builders/llvm-hexagon-elf/builds/16716) but the tests work perfectly for me. Could someone take a look and let me know which value of ConstraintCode caused getInlineAsmMemConstraint() to return InlineAsm::Constraint_Unknown?
>
>
> USERS
> dsanders (Author)
>
> http://reviews.llvm.org/rL232374
>
> EMAIL PREFERENCES
> http://reviews.llvm.org/settings/panel/emailpreferences/
>
>
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
More information about the llvm-commits
mailing list