HomeFreeBSD

Add a patch for upstream r300404:

Description

Add a patch for upstream r300404:

Use correct registers for "A" inline asm constraint

Summary:
In PR32594, inline assembly using the 'A' constraint on x86_64 causes
llvm to crash with a "Cannot select" stack trace. This is because
X86TargetLowering::getRegForInlineAsmConstraint hardcodes that 'A'
means the EAX and EDX registers.

However, on x86_64 it means the RAX and RDX registers, and on 16-bit x86
(ia16?) it means the old AX and DX registers.

Add new register classes in X86RegisterInfo.td to support these cases,
and amend the logic in getRegForInlineAsmConstraint to cope with
different subtargets. Also add a test case, derived from PR32594.

Submitted by: dim

Details

Provenance
brooksAuthored on
Parents
rP438667: Add DOCS option back
Branches
Unknown
Tags
Unknown