You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Linux ABI requires that you set control register 6 before calling a variadic
function with a float parameter. Similarly, it recommends that you clear it
before calling a variadic function without one.
A simple example is:
#include <stdio.h>
int main(void) {
printf("%f\n", 1.2);
return 0;
}
which will print "0.0" on PPC Linux. In the assembly, right before "bl printf",
add "creqv 6,6,6" and it will work properly. This fix will require changes to
the PPCISelLowering.cpp:LowerCALL function.
The text was updated successfully, but these errors were encountered:
Extended Description
The Linux ABI requires that you set control register 6 before calling a variadic
function with a float parameter. Similarly, it recommends that you clear it
before calling a variadic function without one.
A simple example is:
#include <stdio.h>
int main(void) {
printf("%f\n", 1.2);
return 0;
}
which will print "0.0" on PPC Linux. In the assembly, right before "bl printf",
add "creqv 6,6,6" and it will work properly. This fix will require changes to
the PPCISelLowering.cpp:LowerCALL function.
The text was updated successfully, but these errors were encountered: