mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-30 04:35:00 +00:00
Fix problem where lli would not print out a 64 bit value when the client code
uses the modifier "%ld". Now lli passes off "%lld" to the underlying runtime library in this case. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3230 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1bbd36156b
commit
69ab7a8ac6
@ -351,9 +351,17 @@ GenericValue lle_X_sprintf(FunctionType *M, const vector<GenericValue> &Args) {
|
||||
case 'd': case 'i':
|
||||
case 'u': case 'o':
|
||||
case 'x': case 'X':
|
||||
if (HowLong == 2)
|
||||
if (HowLong >= 1) {
|
||||
if (HowLong == 1) {
|
||||
// Make sure we use %lld with a 64 bit argument because we might be
|
||||
// compiling LLI on a 32 bit compiler.
|
||||
unsigned Size = strlen(FmtBuf);
|
||||
FmtBuf[Size] = FmtBuf[Size-1];
|
||||
FmtBuf[Size+1] = 0;
|
||||
FmtBuf[Size-1] = 'l';
|
||||
}
|
||||
sprintf(Buffer, FmtBuf, Args[ArgNo++].ULongVal);
|
||||
else
|
||||
} else
|
||||
sprintf(Buffer, FmtBuf, Args[ArgNo++].IntVal); break;
|
||||
case 'e': case 'E': case 'g': case 'G': case 'f':
|
||||
sprintf(Buffer, FmtBuf, Args[ArgNo++].DoubleVal); break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user