mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Revert r97211 and r97213 to get the build green again.
llvm-svn: 97220
This commit is contained in:
parent
594d027cdb
commit
78f5a17a0c
@ -158,7 +158,6 @@ bool PIC16AsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
|||||||
// printOperand - print operand of insn.
|
// printOperand - print operand of insn.
|
||||||
void PIC16AsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
|
void PIC16AsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
|
||||||
const MachineOperand &MO = MI->getOperand(opNum);
|
const MachineOperand &MO = MI->getOperand(opNum);
|
||||||
const Function *F = MI->getParent()->getParent()->getFunction();
|
|
||||||
|
|
||||||
switch (MO.getType()) {
|
switch (MO.getType()) {
|
||||||
case MachineOperand::MO_Register:
|
case MachineOperand::MO_Register:
|
||||||
@ -191,18 +190,19 @@ void PIC16AsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
|
|||||||
}
|
}
|
||||||
case MachineOperand::MO_ExternalSymbol: {
|
case MachineOperand::MO_ExternalSymbol: {
|
||||||
const char *Sname = MO.getSymbolName();
|
const char *Sname = MO.getSymbolName();
|
||||||
std::string Printname = Sname;
|
|
||||||
|
|
||||||
// Intrinsic stuff needs to be renamed if we are printing IL fn.
|
// If its a libcall name, record it to decls section.
|
||||||
if (PAN::isIntrinsicStuff(Printname)) {
|
if (PAN::getSymbolTag(Sname) == PAN::LIBCALL)
|
||||||
if (PAN::isISR(F->getSection())) {
|
LibcallDecls.push_back(Sname);
|
||||||
Printname = PAN::Rename(Sname);
|
|
||||||
}
|
// Record a call to intrinsic to print the extern declaration for it.
|
||||||
// Record these decls, we need to print them in asm as extern.
|
std::string Sym = Sname;
|
||||||
LibcallDecls.push_back(createESName(Printname));
|
if (PAN::isMemIntrinsic(Sym)) {
|
||||||
|
Sym = PAN::addPrefix(Sym);
|
||||||
|
LibcallDecls.push_back(createESName(Sym));
|
||||||
}
|
}
|
||||||
|
|
||||||
O << Printname;
|
O << Sym;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MachineOperand::MO_MachineBasicBlock:
|
case MachineOperand::MO_MachineBasicBlock:
|
||||||
|
@ -178,21 +178,18 @@ namespace llvm {
|
|||||||
return Func1 + tag;
|
return Func1 + tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the retval label for the given function.
|
|
||||||
static std::string getRetvalLabel(const std::string &Func) {
|
static std::string getRetvalLabel(const std::string &Func) {
|
||||||
std::string Func1 = addPrefix(Func);
|
std::string Func1 = addPrefix(Func);
|
||||||
std::string tag = getTagName(RET_LABEL);
|
std::string tag = getTagName(RET_LABEL);
|
||||||
return Func1 + tag;
|
return Func1 + tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the argument label for the given function.
|
|
||||||
static std::string getArgsLabel(const std::string &Func) {
|
static std::string getArgsLabel(const std::string &Func) {
|
||||||
std::string Func1 = addPrefix(Func);
|
std::string Func1 = addPrefix(Func);
|
||||||
std::string tag = getTagName(ARGS_LABEL);
|
std::string tag = getTagName(ARGS_LABEL);
|
||||||
return Func1 + tag;
|
return Func1 + tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the tempdata label for the given function.
|
|
||||||
static std::string getTempdataLabel(const std::string &Func) {
|
static std::string getTempdataLabel(const std::string &Func) {
|
||||||
std::string Func1 = addPrefix(Func);
|
std::string Func1 = addPrefix(Func);
|
||||||
std::string tag = getTagName(TEMPS_LABEL);
|
std::string tag = getTagName(TEMPS_LABEL);
|
||||||
@ -266,7 +263,6 @@ namespace llvm {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline static bool isMemIntrinsic (const std::string &Name) {
|
inline static bool isMemIntrinsic (const std::string &Name) {
|
||||||
if (Name.compare("@memcpy") == 0 || Name.compare("@memset") == 0 ||
|
if (Name.compare("@memcpy") == 0 || Name.compare("@memset") == 0 ||
|
||||||
Name.compare("@memmove") == 0) {
|
Name.compare("@memmove") == 0) {
|
||||||
@ -276,41 +272,6 @@ namespace llvm {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Currently names of libcalls are assigned during TargetLowering
|
|
||||||
// object construction. There is no provision to change the when the
|
|
||||||
// code for a function IL function being generated.
|
|
||||||
// So we have to change these names while printing assembly.
|
|
||||||
// We need to do that mainly for names related to intrinsics. This
|
|
||||||
// function returns true if a name needs to be cloned.
|
|
||||||
inline static bool isIntrinsicStuff(const std::string &Name) {
|
|
||||||
// Return true if the name contains LIBCALL marker, or a MemIntrinisc.
|
|
||||||
// these are mainly ARGS_LABEL, RET_LABEL, and the LIBCALL name itself.
|
|
||||||
if ((Name.find(getTagName(LIBCALL)) != std::string::npos)
|
|
||||||
|| isMemIntrinsic(Name))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rename the name for IL.
|
|
||||||
inline static std::string Rename(const std::string &Name) {
|
|
||||||
std::string Newname;
|
|
||||||
// If its a label (LIBCALL+Func+LABEL), change it to
|
|
||||||
// (LIBCALL+Func+IL+LABEL).
|
|
||||||
TAGS id = getSymbolTag(Name);
|
|
||||||
if (id == ARGS_LABEL || id == RET_LABEL) {
|
|
||||||
std::size_t pos = Name.find(getTagName(id));
|
|
||||||
Newname = Name.substr(0, pos) + ".IL" + getTagName(id);
|
|
||||||
return Newname;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Else, just append IL to name.
|
|
||||||
return Name + ".IL";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
inline static bool isLocalToFunc (std::string &Func, std::string &Var) {
|
inline static bool isLocalToFunc (std::string &Func, std::string &Var) {
|
||||||
if (! isLocalName(Var)) return false;
|
if (! isLocalName(Var)) return false;
|
||||||
|
|
||||||
|
@ -1527,24 +1527,10 @@ bool PIC16TargetLowering::NeedToConvertToMemOp(SDValue Op, unsigned &MemOp,
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (isDirectLoad(Op.getOperand(1))) {
|
if (isDirectLoad(Op.getOperand(1))) {
|
||||||
if (Op.getOperand(1).hasOneUse()) {
|
if (Op.getOperand(1).hasOneUse())
|
||||||
// Legal and profitable folding check uses the NodeId of DAG nodes.
|
return false;
|
||||||
// This NodeId is assigned by topological order. Therefore first
|
else
|
||||||
// assign topological order then perform legal and profitable check.
|
MemOp = 1;
|
||||||
// Note:- Though this ordering is done before begining with legalization,
|
|
||||||
// newly added node during legalization process have NodeId=-1 (NewNode)
|
|
||||||
// therefore before performing any check proper ordering of the node is
|
|
||||||
// required.
|
|
||||||
DAG.AssignTopologicalOrder();
|
|
||||||
|
|
||||||
// Direct load operands are folded in binary operations. But before folding
|
|
||||||
// verify if this folding is legal. Fold only if it is legal otherwise
|
|
||||||
// convert this direct load to a separate memory operation.
|
|
||||||
if(ISel->IsLegalToFold(Op.getOperand(1), Op.getNode(), Op.getNode()))
|
|
||||||
return false;
|
|
||||||
else
|
|
||||||
MemOp = 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -218,8 +218,8 @@ void PIC16Cloner::cloneSharedFunctions(CallGraphNode *CGN) {
|
|||||||
// Such a case may occur when the function has been declarated
|
// Such a case may occur when the function has been declarated
|
||||||
// in the C source code but its body exists in assembly file.
|
// in the C source code but its body exists in assembly file.
|
||||||
if (!CalledF->isDeclaration()) {
|
if (!CalledF->isDeclaration()) {
|
||||||
Function *cf = cloneFunction(CalledF);
|
cloneFunction(CalledF);
|
||||||
remapAllSites(CGN->getFunction(), CalledF, cf);
|
// FIXME: remap all the call sites here.
|
||||||
} else {
|
} else {
|
||||||
// It is called only from ISR. Still mark it as we need this info
|
// It is called only from ISR. Still mark it as we need this info
|
||||||
// in code gen while calling intrinsics.Function is not marked.
|
// in code gen while calling intrinsics.Function is not marked.
|
||||||
|
Loading…
Reference in New Issue
Block a user