]> granicus.if.org Git - clang/commit
[Targets] Implement getConstraintRegister for ARM and AArch64
authorMikhail Maltsev <mikhail.maltsev@arm.com>
Mon, 30 Apr 2018 09:11:08 +0000 (09:11 +0000)
committerMikhail Maltsev <mikhail.maltsev@arm.com>
Mon, 30 Apr 2018 09:11:08 +0000 (09:11 +0000)
commit4388e8f820106c1f6151e337586d4f011c1090cb
tree27936d3ea75075842888776429e978e22e986360
parentef91bd38cd94e34b4b0a30e225e507f5c10087d3
[Targets] Implement getConstraintRegister for ARM and AArch64

Summary:
The getConstraintRegister method is used by semantic checking of
inline assembly statements in order to diagnose conflicts between
clobber list and input/output lists. Currently ARM and AArch64 don't
override getConstraintRegister, so conflicts between registers
assigned to variables in asm labels and clobber lists are not
diagnosed. Such conflicts can cause assertion failures in the back end
and even miscompilations.

This patch implements getConstraintRegister for ARM and AArch64
targets. Since these targets don't have single-register constraints,
the implementation is trivial and just returns the register specified
in an asm label (if any).

Reviewers: eli.friedman, javed.absar, thopre

Reviewed By: thopre

Subscribers: rengolin, eraman, rogfer01, myatsina, kristof.beyls, cfe-commits, chrib

Differential Revision: https://reviews.llvm.org/D45965

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@331164 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Basic/TargetInfo.h
lib/Basic/Targets/AArch64.h
lib/Basic/Targets/ARM.h
test/Sema/arm-asm.c
test/Sema/arm64-inline-asm.c