]> granicus.if.org Git - clang/commit
Fix invalid calling convention used for libcalls on ARM.
authorAnton Korobeynikov <asl@math.spbu.ru>
Tue, 2 Dec 2014 16:04:58 +0000 (16:04 +0000)
committerAnton Korobeynikov <asl@math.spbu.ru>
Tue, 2 Dec 2014 16:04:58 +0000 (16:04 +0000)
commit227f91e7caaf79bd9537e0e104728387516da043
tree2c6a1a709493a573a888a378a0a0a0a47c0ec608
parenta72e27bdfa09dc7940261f5a81767f74ce0d9de2
Fix invalid calling convention used for libcalls on ARM.
ARM ABI specifies that all the libcalls use soft FP ABI
(even hard FP binaries). These days clang emits _mulsc3 / _muldc3
calls with default (C) calling convention which would be translated
into AAPCS_VFP LLVM calling and thus the result of complex
multiplication will be bogus.

Introduce a way for a target to specify explicitly calling
convention for libcalls. Right now this is temporary correctness
fix. Ultimately, we'll end with intrinsic for complex
multiplication and all calling convention decisions for libcalls
will be put into backend.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@223123 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/ABIInfo.h
lib/CodeGen/CGExprComplex.cpp
lib/CodeGen/CodeGenModule.cpp
lib/CodeGen/CodeGenModule.h
lib/CodeGen/TargetInfo.cpp
test/CodeGen/complex-math.c