mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-04 06:09:05 +00:00
Rewrite FP constant handling in DEBUG_VALUE yet
again, so it more or less handles long double. Restore \n removed in latest MC frenzy. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95271 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
af6ce14d67
commit
c4b94e02af
@ -25,6 +25,7 @@
|
||||
#include "llvm/Target/Mangler.h"
|
||||
#include "llvm/Support/FormattedStream.h"
|
||||
#include "llvm/ADT/SmallString.h"
|
||||
#include "llvm/Type.h"
|
||||
using namespace llvm;
|
||||
|
||||
|
||||
@ -430,14 +431,25 @@ void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) {
|
||||
if (MI->getOperand(0).getType()==MachineOperand::MO_Register &&
|
||||
MI->getOperand(0).getReg()==0) {
|
||||
// Suppress offset in this case, it is not meaningful.
|
||||
O << "undef";
|
||||
O << "undef\n";
|
||||
return;
|
||||
} else if (MI->getOperand(0).getType()==MachineOperand::MO_FPImmediate) {
|
||||
// This is more naturally done in printOperand, but since the only use
|
||||
// of such an operand is in this comment and that is temporary, we
|
||||
// prefer to keep this localized.
|
||||
O << '$';
|
||||
MI->getOperand(0).print(O, &TM);
|
||||
// of such an operand is in this comment and that is temporary (and it's
|
||||
// ugly), we prefer to keep this localized.
|
||||
// The include of Type.h may be removable when this code is.
|
||||
if (MI->getOperand(0).getFPImm()->getType()->isFloatTy() ||
|
||||
MI->getOperand(0).getFPImm()->getType()->isDoubleTy())
|
||||
MI->getOperand(0).print(O, &TM);
|
||||
else {
|
||||
// There is no good way to print long double. Convert a copy to
|
||||
// double. Ah well, it's only a comment.
|
||||
bool ignored;
|
||||
APFloat APF = APFloat(MI->getOperand(0).getFPImm()->getValueAPF());
|
||||
APF.convert(APFloat::IEEEdouble, APFloat::rmNearestTiesToEven,
|
||||
&ignored);
|
||||
O << "(long double) " << APF.convertToDouble();
|
||||
}
|
||||
} else
|
||||
printOperand(MI, 0);
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user