http://llvm.org/bugs/show_bug.cgi?id=11860
Bug #: 11860
Summary: ARM: floating-point arguments of variadic functions
passed incorrectly with AAPCS-VFP ABI
Product: libraries
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P
Component: Backend: ARM
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected]
Classification: Unclassified
Created attachment 7948
--> http://llvm.org/bugs/attachment.cgi?id=7948
Fix vararg calls with float arguments under AAPCS-VFP ABI
Calls to variadic functions should always use the base AAPCS variant, even with
AAPCS-VFP is in use. This is currently broken as demonstrated by this test:
float foo(float x, ...);
float bar(void)
{
return foo(0.0);
}
Using -mfloat-abi hard, this compiles to the following:
00000000 <bar>:
0: e92d4800 push {r11, lr}
4: ed9f0a01 vldr s0, [pc, #4] ; 10 <bar+0x10>
8: ebfffffe bl 0 <foo>
c: e8bd8800 pop {r11, pc}
10: 00000000 andeq r0, r0, r0
The attached patch fixes the problem.
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs