]> granicus.if.org Git - clang/commit
PR22560: Fix argument order for ARM _MoveToCoprocessor builtins.
authorBob Wilson <bob.wilson@apple.com>
Tue, 23 Jun 2015 21:10:15 +0000 (21:10 +0000)
committerBob Wilson <bob.wilson@apple.com>
Tue, 23 Jun 2015 21:10:15 +0000 (21:10 +0000)
commit732f9bc1a0e91abf2314e3c1bbafe5541f0708f9
tree03bd595127c22e55930b67d467ad3d698e92c31e
parentffe58864d3481e3eefb0b79440d0b6822de85b68
PR22560: Fix argument order for ARM _MoveToCoprocessor builtins.

The Microsoft-extension _MoveToCoprocessor and _MoveToCoprocessor2
builtins take the register value to be moved as the first argument,
but the corresponding mcr and mcr2 LLVM intrinsics expect that value
to be the third argument. Handle this as a special case, while still
leaving those intrinsics as generic MSBuiltins. I considered the
alternative of handling these in EmitARMBuiltinExpr, but that does
not work well for the follow-up change that I'm going to make to improve
the error handling for PR22560 -- we need the GetBuiltinType() checks
for ICEArguments, and the ARM version of that code is only used for
Neon intrinsics where the last argument is special and not
checked in the normal way.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240462 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/CGBuiltin.cpp
test/CodeGen/arm-microsoft-intrinsics.c