Changed lowering and asmprinter to use ABI Names class called PAN.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71386 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/PIC16/PIC16ISelLowering.cpp b/lib/Target/PIC16/PIC16ISelLowering.cpp
index 3e3d3b8..a7676dc 100644
--- a/lib/Target/PIC16/PIC16ISelLowering.cpp
+++ b/lib/Target/PIC16/PIC16ISelLowering.cpp
@@ -23,12 +23,10 @@
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
-#include <cstdio>
using namespace llvm;
-
// PIC16TargetLowering Constructor.
PIC16TargetLowering::PIC16TargetLowering(PIC16TargetMachine &TM)
: TargetLowering(TM), TmpSize(0) {
@@ -41,24 +39,24 @@
setShiftAmountFlavor(Extend);
// SRA library call names
- setPIC16LibcallName(PIC16ISD::SRA_I8, "__intrinsics.sra.i8");
- setLibcallName(RTLIB::SRA_I16, "__intrinsics.sra.i16");
- setLibcallName(RTLIB::SRA_I32, "__intrinsics.sra.i32");
+ setPIC16LibcallName(PIC16ISD::SRA_I8, "@__intrinsics.sra.i8");
+ setLibcallName(RTLIB::SRA_I16, "@__intrinsics.sra.i16");
+ setLibcallName(RTLIB::SRA_I32, "@__intrinsics.sra.i32");
// SHL library call names
- setPIC16LibcallName(PIC16ISD::SLL_I8, "__intrinsics.sll.i8");
- setLibcallName(RTLIB::SHL_I16, "__intrinsics.sll.i16");
- setLibcallName(RTLIB::SHL_I32, "__intrinsics.sll.i32");
+ setPIC16LibcallName(PIC16ISD::SLL_I8, "@__intrinsics.sll.i8");
+ setLibcallName(RTLIB::SHL_I16, "@__intrinsics.sll.i16");
+ setLibcallName(RTLIB::SHL_I32, "@__intrinsics.sll.i32");
// SRL library call names
- setPIC16LibcallName(PIC16ISD::SRL_I8, "__intrinsics.srl.i8");
- setLibcallName(RTLIB::SRL_I16, "__intrinsics.srl.i16");
- setLibcallName(RTLIB::SRL_I32, "__intrinsics.srl.i32");
+ setPIC16LibcallName(PIC16ISD::SRL_I8, "@__intrinsics.srl.i8");
+ setLibcallName(RTLIB::SRL_I16, "@__intrinsics.srl.i16");
+ setLibcallName(RTLIB::SRL_I32, "@__intrinsics.srl.i32");
// MUL Library call names
- setPIC16LibcallName(PIC16ISD::MUL_I8, "__intrinsics.mul.i8");
- setLibcallName(RTLIB::MUL_I16, "__intrinsics.mul.i16");
- setLibcallName(RTLIB::MUL_I32, "__intrinsics.mul.i32");
+ setPIC16LibcallName(PIC16ISD::MUL_I8, "@__intrinsics.mul.i8");
+ setLibcallName(RTLIB::MUL_I16, "@__intrinsics.mul.i16");
+ setLibcallName(RTLIB::MUL_I32, "@__intrinsics.mul.i32");
setOperationAction(ISD::GlobalAddress, MVT::i16, Custom);
setOperationAction(ISD::ExternalSymbol, MVT::i16, Custom);
@@ -529,9 +527,9 @@
// with, we need to traverse all the FrameIndices available earlier in
// the list and add their requested size.
unsigned FIndex = FR->getIndex();
- char *tmpName = new char [strlen(Name.c_str()) + 8];
+ const char *tmpName;
if (FIndex < ReservedFrameCount) {
- sprintf(tmpName, "%s.frame.", Name.c_str());
+ tmpName = createESName(PAN::getFrameLabel(Name));
ES = DAG.getTargetExternalSymbol(tmpName, MVT::i8);
Offset = 0;
for (unsigned i=0; i<FIndex ; ++i) {
@@ -539,7 +537,7 @@
}
} else {
// FrameIndex has been made for some temporary storage
- sprintf(tmpName, "%s.temp.", Name.c_str());
+ tmpName = createESName(PAN::getTempdataLabel(Name));
ES = DAG.getTargetExternalSymbol(tmpName, MVT::i8);
Offset = GetTmpOffsetForFI(FIndex, MFI->getObjectSize(FIndex));
}
@@ -845,12 +843,11 @@
const Function *Func = MF.getFunction();
const std::string FuncName = Func->getName();
- char *tmpName = new char [strlen(FuncName.c_str()) + 8];
// Put the value on stack.
// Get a stack slot index and convert to es.
int FI = MF.getFrameInfo()->CreateStackObject(1, 1);
- sprintf(tmpName, "%s.temp.", FuncName.c_str());
+ const char *tmpName = createESName(PAN::getTempdataLabel(FuncName));
SDValue ES = DAG.getTargetExternalSymbol(tmpName, MVT::i8);
// Store the value to ES.
@@ -1064,8 +1061,7 @@
const Function *F = MF.getFunction();
std::string FuncName = F->getName();
- char *tmpName = new char [strlen(FuncName.c_str()) + 8];
- sprintf(tmpName, "%s.frame.", FuncName.c_str());
+ const char *tmpName = createESName(PAN::getFrameLabel(FuncName));
SDVTList VTs = DAG.getVTList (MVT::i8, MVT::Other);
SDValue ES = DAG.getTargetExternalSymbol(tmpName, MVT::i8);
SDValue BS = DAG.getConstant(1, MVT::i8);
@@ -1258,13 +1254,11 @@
}
// Label for argument passing
- char *argFrame = new char [strlen(Name.c_str()) + 8];
- sprintf(argFrame, "%s.args.", Name.c_str());
+ const char *argFrame = createESName(PAN::getArgsLabel(Name));
ArgLabel = DAG.getTargetExternalSymbol(argFrame, MVT::i8);
// Label for reading return value
- char *retName = new char [strlen(Name.c_str()) + 8];
- sprintf(retName, "%s.ret.", Name.c_str());
+ const char *retName = createESName(PAN::getRetvalLabel(Name));
RetLabel = DAG.getTargetExternalSymbol(retName, MVT::i8);
} else {
// if indirect call
@@ -1460,8 +1454,7 @@
InitReservedFrameCount(F);
// Create the <fname>.args external symbol.
- char *tmpName = new char [strlen(FuncName.c_str()) + 8];
- sprintf(tmpName, "%s.args.", FuncName.c_str());
+ const char *tmpName = createESName(PAN::getArgsLabel(FuncName));
SDValue ES = DAG.getTargetExternalSymbol(tmpName, MVT::i8);
// Load arg values from the label + offset.