mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-10 08:40:41 +00:00
Partly revert invalid r41774
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42322 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ee143ade09
commit
2fe1259d0a
@ -130,6 +130,8 @@ namespace {
|
||||
/// SelectionDAGISel when it has created a SelectionDAG for us to codegen.
|
||||
virtual void InstructionSelectBasicBlock(SelectionDAG &DAG);
|
||||
|
||||
virtual void EmitFunctionEntryCode(Function &Fn, MachineFunction &MF);
|
||||
|
||||
virtual bool CanBeFoldedBy(SDNode *N, SDNode *U, SDNode *Root) const;
|
||||
|
||||
// Include the pieces autogenerated from the target description.
|
||||
@ -162,6 +164,8 @@ namespace {
|
||||
std::vector<SDOperand> &OutOps,
|
||||
SelectionDAG &DAG);
|
||||
|
||||
void EmitSpecialCodeForMain(MachineBasicBlock *BB, MachineFrameInfo *MFI);
|
||||
|
||||
inline void getAddressOperands(X86ISelAddressMode &AM, SDOperand &Base,
|
||||
SDOperand &Scale, SDOperand &Index,
|
||||
SDOperand &Disp) {
|
||||
@ -540,6 +544,22 @@ void X86DAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
|
||||
} while (&*(MBBI++) != BB);
|
||||
}
|
||||
|
||||
/// EmitSpecialCodeForMain - Emit any code that needs to be executed only in
|
||||
/// the main function.
|
||||
void X86DAGToDAGISel::EmitSpecialCodeForMain(MachineBasicBlock *BB,
|
||||
MachineFrameInfo *MFI) {
|
||||
const TargetInstrInfo *TII = TM.getInstrInfo();
|
||||
if (Subtarget->isTargetCygMing())
|
||||
BuildMI(BB, TII->get(X86::CALLpcrel32)).addExternalSymbol("__main");
|
||||
}
|
||||
|
||||
void X86DAGToDAGISel::EmitFunctionEntryCode(Function &Fn, MachineFunction &MF) {
|
||||
// If this is main, emit special code for main.
|
||||
MachineBasicBlock *BB = MF.begin();
|
||||
if (Fn.hasExternalLinkage() && Fn.getName() == "main")
|
||||
EmitSpecialCodeForMain(BB, MF.getFrameInfo());
|
||||
}
|
||||
|
||||
/// MatchAddress - Add the specified node to the specified addressing mode,
|
||||
/// returning true if it cannot be done. This just pattern matches for the
|
||||
/// addressing mode
|
||||
|
Loading…
x
Reference in New Issue
Block a user