[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.76 - 1.77 --- Log message: Generalize TargetData strings, to support more interesting forms of data. Patch by Scott Michel. --- Diffs of the changes: (+1 -1) SparcAsmPrinter.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.76 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.77 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.76 Sat Jan 20 16:35:55 2007 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Tue Feb 13 23:52:17 2007 @@ -229,7 +229,7 @@ std::string name = Mang-getValueName(I); Constant *C = I-getInitializer(); unsigned Size = TD-getTypeSize(C-getType()); - unsigned Align = TD-getTypeAlignmentPref(C-getType()); + unsigned Align = TD-getPrefTypeAlignment(C-getType()); if (C-isNullValue() (I-hasLinkOnceLinkage() || I-hasInternalLinkage() || ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.75 - 1.76 --- Log message: Teach TargetData to handle 'preferred' alignment for each target, and use these alignment amounts to align scalars when we can. Patch by Scott Michel! --- Diffs of the changes: (+2 -2) SparcAsmPrinter.cpp |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.75 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.76 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.75 Tue Dec 19 16:59:26 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Sat Jan 20 16:35:55 2007 @@ -229,7 +229,7 @@ std::string name = Mang-getValueName(I); Constant *C = I-getInitializer(); unsigned Size = TD-getTypeSize(C-getType()); - unsigned Align = TD-getTypeAlignment(C-getType()); + unsigned Align = TD-getTypeAlignmentPref(C-getType()); if (C-isNullValue() (I-hasLinkOnceLinkage() || I-hasInternalLinkage() || @@ -239,7 +239,7 @@ O \t.local name \n; O \t.comm name , TD-getTypeSize(C-getType()) - , (unsigned)TD-getTypeAlignment(C-getType()); + , Align; O \n; } else { switch (I-getLinkage()) { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.71 - 1.72 --- Log message: These asm printers shouldn't use assembly/writer.h --- Diffs of the changes: (+1 -6) SparcAsmPrinter.cpp |7 +-- 1 files changed, 1 insertion(+), 6 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.71 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.72 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.71 Thu Nov 2 14:25:49 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Wed Dec 6 00:13:25 2006 @@ -17,7 +17,6 @@ #include llvm/Constants.h #include llvm/DerivedTypes.h #include llvm/Module.h -#include llvm/Assembly/Writer.h #include llvm/CodeGen/AsmPrinter.h #include llvm/CodeGen/MachineFunctionPass.h #include llvm/CodeGen/MachineConstantPool.h @@ -241,8 +240,6 @@ O \t.comm name , TD-getTypeSize(C-getType()) , (unsigned)TD-getTypeAlignment(C-getType()); -O \t\t! ; -WriteAsOperand(O, I, true, true, M); O \n; } else { switch (I-getLinkage()) { @@ -284,9 +281,7 @@ O \t.align Align \n; O \t.type name ,#object\n; O \t.size name , Size \n; -O name :\t\t\t\t! ; -WriteAsOperand(O, I, true, true, M); -O \n; +O name :\n; EmitGlobalConstant(C); } } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.70 - 1.71 --- Log message: For PR786: http://llvm.org/PR786 : Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting fall out by removing unused variables. Remaining warnings have to do with unused functions (I didn't want to delete code without review) and unused variables in generated code. Maintainers should clean up the remaining issues when they see them. All changes pass DejaGnu tests and Olden. --- Diffs of the changes: (+0 -2) SparcAsmPrinter.cpp |2 -- 1 files changed, 2 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.70 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.71 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.70 Wed Oct 4 21:48:40 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Thu Nov 2 14:25:49 2006 @@ -185,8 +185,6 @@ return; } - MachineOperand::MachineOperandType OpTy = MI-getOperand(opNum+1).getType(); - if (MI-getOperand(opNum+1).isRegister() MI-getOperand(opNum+1).getReg() == SP::G0) return; // don't print +%g0 ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.69 - 1.70 --- Log message: Use getSectionForFunction --- Diffs of the changes: (+5 -3) SparcAsmPrinter.cpp |8 +--- 1 files changed, 5 insertions(+), 3 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.69 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.70 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.69 Thu Sep 14 13:23:27 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Wed Oct 4 21:48:40 2006 @@ -94,15 +94,17 @@ // What's my mangled name? CurrentFnName = Mang-getValueName(MF.getFunction()); - // Print out labels for the function. - SwitchToTextSection(.text, MF.getFunction()); - EmitAlignment(4, MF.getFunction()); + // Print out the label for the function. + const Function *F = MF.getFunction(); + SwitchToTextSection(getSectionForFunction(*F).c_str(), F); + EmitAlignment(4, F); O \t.globl\t CurrentFnName \n; O \t.type\t CurrentFnName , #function\n; O CurrentFnName :\n; // Number each basic block so that we can consistently refer to them // in PC-relative references. + // FIXME: Why not use the MBB numbers? NumberForBB.clear(); for (MachineFunction::const_iterator I = MF.begin(), E = MF.end(); I != E; ++I) { ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.68 - 1.69 --- Log message: Adding dllimport, dllexport and external weak linkage types. DLL* linkages got full (I hope) codegeneration support in C both x86 assembler backends. External weak linkage added for future use, we don't provide any codegeneration, etc. support for it. --- Diffs of the changes: (+8 -0) SparcAsmPrinter.cpp |8 1 files changed, 8 insertions(+) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.68 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.69 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.68 Thu Sep 7 17:06:40 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Thu Sep 14 13:23:27 2006 @@ -271,6 +271,14 @@ case GlobalValue::GhostLinkage: std::cerr Should not have any unmaterialized functions!\n; abort(); +case GlobalValue::DLLImportLinkage: + std::cerr DLLImport linkage is not supported by this target!\n; + abort(); +case GlobalValue::DLLExportLinkage: + std::cerr DLLExport linkage is not supported by this target!\n; + abort(); +default: + assert(0 Unknown linkage type!); } O \t.align Align \n; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp SparcTargetMachine.h
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.67 - 1.68 SparcTargetMachine.h updated: 1.15 - 1.16 --- Log message: Make target asm info a property of the target machine. --- Diffs of the changes: (+6 -14) SparcAsmPrinter.cpp | 16 ++-- SparcTargetMachine.h |4 2 files changed, 6 insertions(+), 14 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.67 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.68 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.67 Wed Sep 6 13:34:40 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Thu Sep 7 17:06:40 2006 @@ -37,19 +37,8 @@ namespace { Statistic EmittedInsts(asm-printer, Number of machine instrs printed); - struct VISIBILITY_HIDDEN SparcTargetAsmInfo : public TargetAsmInfo { -SparcTargetAsmInfo() { - Data16bitsDirective = \t.half\t; - Data32bitsDirective = \t.word\t; - Data64bitsDirective = 0; // .xword is only supported by V9. - ZeroDirective = \t.skip\t; - CommentString = !; - ConstantPoolSection = \t.section \.rodata\,#alloc\n; -} - }; - struct VISIBILITY_HIDDEN SparcAsmPrinter : public AsmPrinter { -SparcAsmPrinter(std::ostream O, TargetMachine TM, TargetAsmInfo *T) +SparcAsmPrinter(std::ostream O, TargetMachine TM, const TargetAsmInfo *T) : AsmPrinter(O, TM, T) { } @@ -85,8 +74,7 @@ /// FunctionPass *llvm::createSparcCodePrinterPass(std::ostream o, TargetMachine tm) { - SparcTargetAsmInfo *TAI = new SparcTargetAsmInfo(); - return new SparcAsmPrinter(o, tm, TAI); + return new SparcAsmPrinter(o, tm, tm.getTargetAsmInfo()); } /// runOnMachineFunction - This uses the printMachineInstruction() Index: llvm/lib/Target/Sparc/SparcTargetMachine.h diff -u llvm/lib/Target/Sparc/SparcTargetMachine.h:1.15 llvm/lib/Target/Sparc/SparcTargetMachine.h:1.16 --- llvm/lib/Target/Sparc/SparcTargetMachine.h:1.15 Sun Sep 3 23:14:57 2006 +++ llvm/lib/Target/Sparc/SparcTargetMachine.h Thu Sep 7 17:06:40 2006 @@ -19,6 +19,7 @@ #include llvm/Target/TargetFrameInfo.h #include SparcInstrInfo.h #include SparcSubtarget.h +#include SparcTargetAsmInfo.h namespace llvm { @@ -41,6 +42,9 @@ virtual const TargetData *getTargetData() const { return DataLayout; } static unsigned getModuleMatchQuality(const Module M); + virtual const TargetAsmInfo *createTargetAsmInfo() const { +return static_castconst TargetAsmInfo *(new SparcTargetAsmInfo(*this)); + } // Pass Pipeline Configuration virtual bool addInstSelector(FunctionPassManager PM, bool Fast); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.66 - 1.67 --- Log message: Separate target specific asm properties from the asm printers. --- Diffs of the changes: (+12 -4) SparcAsmPrinter.cpp | 16 1 files changed, 12 insertions(+), 4 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.66 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.67 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.66 Fri May 12 01:33:48 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Wed Sep 6 13:34:40 2006 @@ -22,6 +22,7 @@ #include llvm/CodeGen/MachineFunctionPass.h #include llvm/CodeGen/MachineConstantPool.h #include llvm/CodeGen/MachineInstr.h +#include llvm/Target/TargetAsmInfo.h #include llvm/Target/TargetData.h #include llvm/Target/TargetMachine.h #include llvm/Support/Mangler.h @@ -36,8 +37,8 @@ namespace { Statistic EmittedInsts(asm-printer, Number of machine instrs printed); - struct SparcAsmPrinter : public AsmPrinter { -SparcAsmPrinter(std::ostream O, TargetMachine TM) : AsmPrinter(O, TM) { + struct VISIBILITY_HIDDEN SparcTargetAsmInfo : public TargetAsmInfo { +SparcTargetAsmInfo() { Data16bitsDirective = \t.half\t; Data32bitsDirective = \t.word\t; Data64bitsDirective = 0; // .xword is only supported by V9. @@ -45,6 +46,12 @@ CommentString = !; ConstantPoolSection = \t.section \.rodata\,#alloc\n; } + }; + + struct VISIBILITY_HIDDEN SparcAsmPrinter : public AsmPrinter { +SparcAsmPrinter(std::ostream O, TargetMachine TM, TargetAsmInfo *T) + : AsmPrinter(O, TM, T) { +} /// We name each basic block in a Function with a unique number, so /// that we can consistently refer to them later. This is cleared @@ -78,7 +85,8 @@ /// FunctionPass *llvm::createSparcCodePrinterPass(std::ostream o, TargetMachine tm) { - return new SparcAsmPrinter(o, tm); + SparcTargetAsmInfo *TAI = new SparcTargetAsmInfo(); + return new SparcAsmPrinter(o, tm, TAI); } /// runOnMachineFunction - This uses the printMachineInstruction() @@ -167,7 +175,7 @@ O MO.getSymbolName(); break; case MachineOperand::MO_ConstantPoolIndex: -O PrivateGlobalPrefix CPI getFunctionNumber() _ +O TAI-getPrivateGlobalPrefix() CPI getFunctionNumber() _ MO.getConstantPoolIndex(); break; default: ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp SparcTargetMachine.h
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.65 - 1.66 SparcTargetMachine.h updated: 1.13 - 1.14 --- Log message: Refactor a bunch of includes so that TargetMachine.h doesn't have to include TargetData.h. This should make recompiles a bit faster with my current TargetData tinkering. --- Diffs of the changes: (+2 -0) SparcAsmPrinter.cpp |1 + SparcTargetMachine.h |1 + 2 files changed, 2 insertions(+) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.65 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.66 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.65 Mon May 8 23:59:56 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Fri May 12 01:33:48 2006 @@ -22,6 +22,7 @@ #include llvm/CodeGen/MachineFunctionPass.h #include llvm/CodeGen/MachineConstantPool.h #include llvm/CodeGen/MachineInstr.h +#include llvm/Target/TargetData.h #include llvm/Target/TargetMachine.h #include llvm/Support/Mangler.h #include llvm/ADT/Statistic.h Index: llvm/lib/Target/Sparc/SparcTargetMachine.h diff -u llvm/lib/Target/Sparc/SparcTargetMachine.h:1.13 llvm/lib/Target/Sparc/SparcTargetMachine.h:1.14 --- llvm/lib/Target/Sparc/SparcTargetMachine.h:1.13 Tue May 2 20:29:57 2006 +++ llvm/lib/Target/Sparc/SparcTargetMachine.h Fri May 12 01:33:48 2006 @@ -15,6 +15,7 @@ #define SPARCTARGETMACHINE_H #include llvm/Target/TargetMachine.h +#include llvm/Target/TargetData.h #include llvm/Target/TargetFrameInfo.h #include llvm/PassManager.h #include SparcInstrInfo.h ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.64 - 1.65 --- Log message: Split SwitchSection into SwitchTo{Text|Data}Section methods. --- Diffs of the changes: (+6 -6) SparcAsmPrinter.cpp | 12 ++-- 1 files changed, 6 insertions(+), 6 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.64 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.65 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.64 Thu May 4 13:05:43 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Mon May 8 23:59:56 2006 @@ -98,8 +98,8 @@ CurrentFnName = Mang-getValueName(MF.getFunction()); // Print out labels for the function. - O \t.text\n; - O \t.align 16\n; + SwitchToTextSection(.text, MF.getFunction()); + EmitAlignment(4, MF.getFunction()); O \t.globl\t CurrentFnName \n; O \t.type\t CurrentFnName , #function\n; O CurrentFnName :\n; @@ -238,7 +238,7 @@ if (C-isNullValue() (I-hasLinkOnceLinkage() || I-hasInternalLinkage() || I-hasWeakLinkage() /* FIXME: Verify correct */)) { -SwitchSection(.data, I); +SwitchToDataSection(.data, I); if (I-hasInternalLinkage()) O \t.local name \n; @@ -253,7 +253,7 @@ case GlobalValue::WeakLinkage: // FIXME: Verify correct for weak. // Nonnull linkonce - weak O \t.weak name \n; - SwitchSection(, I); + SwitchToDataSection(, I); O \t.section\t\.llvm.linkonce.d. name \,\aw\,@progbits\n; break; @@ -267,9 +267,9 @@ // FALL THROUGH case GlobalValue::InternalLinkage: if (C-isNullValue()) -SwitchSection(.bss, I); +SwitchToDataSection(.bss, I); else -SwitchSection(.data, I); +SwitchToDataSection(.data, I); break; case GlobalValue::GhostLinkage: std::cerr Should not have any unmaterialized functions!\n; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp SparcRegisterInfo.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.62 - 1.63 SparcRegisterInfo.cpp updated: 1.41 - 1.42 --- Log message: There shalt be only one immediate operand type! --- Diffs of the changes: (+5 -7) SparcAsmPrinter.cpp |6 ++ SparcRegisterInfo.cpp |6 +++--- 2 files changed, 5 insertions(+), 7 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.62 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.63 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.62 Wed May 3 20:15:02 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Thu May 4 12:21:19 2006 @@ -153,8 +153,7 @@ O %reg MO.getReg(); break; - case MachineOperand::MO_SignExtendedImmed: - case MachineOperand::MO_UnextendedImmed: + case MachineOperand::MO_Immediate: O (int)MO.getImmedValue(); break; case MachineOperand::MO_MachineBasicBlock: @@ -192,8 +191,7 @@ if (OpTy == MachineOperand::MO_VirtualRegister MI-getOperand(opNum+1).getReg() == SP::G0) return; // don't print +%g0 - if ((OpTy == MachineOperand::MO_SignExtendedImmed || - OpTy == MachineOperand::MO_UnextendedImmed) + if (OpTy == MachineOperand::MO_Immediate MI-getOperand(opNum+1).getImmedValue() == 0) return; // don't print +0 Index: llvm/lib/Target/Sparc/SparcRegisterInfo.cpp diff -u llvm/lib/Target/Sparc/SparcRegisterInfo.cpp:1.41 llvm/lib/Target/Sparc/SparcRegisterInfo.cpp:1.42 --- llvm/lib/Target/Sparc/SparcRegisterInfo.cpp:1.41Fri Apr 7 11:34:45 2006 +++ llvm/lib/Target/Sparc/SparcRegisterInfo.cpp Thu May 4 12:21:19 2006 @@ -111,7 +111,7 @@ if (MI.getOpcode() == SP::ADJCALLSTACKDOWN) Size = -Size; if (Size) -BuildMI(MBB, I, SP::ADDri, 2, SP::O6).addReg(SP::O6).addSImm(Size); +BuildMI(MBB, I, SP::ADDri, 2, SP::O6).addReg(SP::O6).addImm(Size); MBB.erase(I); } @@ -136,7 +136,7 @@ // If the offset is small enough to fit in the immediate field, directly // encode it. MI.SetMachineOperandReg(i, SP::I6); -MI.SetMachineOperandConst(i+1, MachineOperand::MO_SignExtendedImmed,Offset); +MI.SetMachineOperandConst(i+1, MachineOperand::MO_Immediate, Offset); } else { // Otherwise, emit a G1 = SETHI %hi(offset). FIXME: it would be better to // scavenge a register here instead of reserving G1 all of the time. @@ -147,7 +147,7 @@ SP::G1).addReg(SP::G1).addReg(SP::I6); // Insert: G1+%lo(offset) into the user. MI.SetMachineOperandReg(i, SP::G1); -MI.SetMachineOperandConst(i+1, MachineOperand::MO_SignExtendedImmed, +MI.SetMachineOperandConst(i+1, MachineOperand::MO_Immediate, Offset ((1 10)-1)); } } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.63 - 1.64 --- Log message: Rename MO_VirtualRegister - MO_Register. Clean up immediate handling. --- Diffs of the changes: (+5 -5) SparcAsmPrinter.cpp | 10 +- 1 files changed, 5 insertions(+), 5 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.63 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.64 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.63 Thu May 4 12:21:19 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Thu May 4 13:05:43 2006 @@ -146,7 +146,7 @@ CloseParen = true; } switch (MO.getType()) { - case MachineOperand::MO_VirtualRegister: + case MachineOperand::MO_Register: if (MRegisterInfo::isPhysicalRegister(MO.getReg())) O % LowercaseString (RI.get(MO.getReg()).Name); else @@ -188,16 +188,16 @@ MachineOperand::MachineOperandType OpTy = MI-getOperand(opNum+1).getType(); - if (OpTy == MachineOperand::MO_VirtualRegister + if (MI-getOperand(opNum+1).isRegister() MI-getOperand(opNum+1).getReg() == SP::G0) return; // don't print +%g0 - if (OpTy == MachineOperand::MO_Immediate + if (MI-getOperand(opNum+1).isImmediate() MI-getOperand(opNum+1).getImmedValue() == 0) return; // don't print +0 O +; - if (OpTy == MachineOperand::MO_GlobalAddress || - OpTy == MachineOperand::MO_ConstantPoolIndex) { + if (MI-getOperand(opNum+1).isGlobalAddress() || + MI-getOperand(opNum+1).isConstantPoolIndex()) { O %lo(; printOperand(MI, opNum+1); O ); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.60 - 1.61 --- Log message: Remove some more unused stuff from MachineInstr that was leftover from V9. --- Diffs of the changes: (+0 -4) SparcAsmPrinter.cpp |4 1 files changed, 4 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.60 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.61 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.60 Tue May 2 20:29:57 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Wed May 3 19:44:25 2006 @@ -166,10 +166,6 @@ case MachineOperand::MO_MachineBasicBlock: printBasicBlockLabel(MO.getMachineBasicBlock()); return; - case MachineOperand::MO_PCRelativeDisp: -std::cerr Shouldn't use addPCDisp() when building Sparc MachineInstrs; -abort (); -return; case MachineOperand::MO_GlobalAddress: O Mang-getValueName(MO.getGlobal()); break; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.61 - 1.62 --- Log message: Remove a bunch more SparcV9 specific stuff --- Diffs of the changes: (+1 -8) SparcAsmPrinter.cpp |9 + 1 files changed, 1 insertion(+), 8 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.61 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.62 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.61 Wed May 3 19:44:25 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Wed May 3 20:15:02 2006 @@ -147,12 +147,6 @@ } switch (MO.getType()) { case MachineOperand::MO_VirtualRegister: -if (Value *V = MO.getVRegValueOrNull()) { - OV-getName() ; - break; -} -// FALLTHROUGH - case MachineOperand::MO_MachineRegister: if (MRegisterInfo::isPhysicalRegister(MO.getReg())) O % LowercaseString (RI.get(MO.getReg()).Name); else @@ -195,8 +189,7 @@ MachineOperand::MachineOperandType OpTy = MI-getOperand(opNum+1).getType(); - if ((OpTy == MachineOperand::MO_VirtualRegister || - OpTy == MachineOperand::MO_MachineRegister) + if (OpTy == MachineOperand::MO_VirtualRegister MI-getOperand(opNum+1).getReg() == SP::G0) return; // don't print +%g0 if ((OpTy == MachineOperand::MO_SignExtendedImmed || ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp SparcTargetMachine.cpp SparcTargetMachine.h
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.59 - 1.60 SparcTargetMachine.cpp updated: 1.44 - 1.45 SparcTargetMachine.h updated: 1.12 - 1.13 --- Log message: Refactor TargetMachine, pushing handling of TargetData into the target-specific subclasses. This has one caller-visible change: getTargetData() now returns a pointer instead of a reference. This fixes PR 759: http://llvm.cs.uiuc.edu/PR759 . --- Diffs of the changes: (+9 -7) SparcAsmPrinter.cpp| 10 +- SparcTargetMachine.cpp |3 ++- SparcTargetMachine.h |3 ++- 3 files changed, 9 insertions(+), 7 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.59 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.60 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.59 Tue May 2 00:37:32 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Tue May 2 20:29:57 2006 @@ -232,7 +232,7 @@ } bool SparcAsmPrinter::doFinalization(Module M) { - const TargetData TD = TM.getTargetData(); + const TargetData *TD = TM.getTargetData(); // Print out module-level global variables here. for (Module::const_global_iterator I = M.global_begin(), E = M.global_end(); @@ -245,8 +245,8 @@ O \n\n; std::string name = Mang-getValueName(I); Constant *C = I-getInitializer(); - unsigned Size = TD.getTypeSize(C-getType()); - unsigned Align = TD.getTypeAlignment(C-getType()); + unsigned Size = TD-getTypeSize(C-getType()); + unsigned Align = TD-getTypeAlignment(C-getType()); if (C-isNullValue() (I-hasLinkOnceLinkage() || I-hasInternalLinkage() || @@ -255,8 +255,8 @@ if (I-hasInternalLinkage()) O \t.local name \n; -O \t.comm name , TD.getTypeSize(C-getType()) - , (unsigned)TD.getTypeAlignment(C-getType()); +O \t.comm name , TD-getTypeSize(C-getType()) + , (unsigned)TD-getTypeAlignment(C-getType()); O \t\t! ; WriteAsOperand(O, I, true, true, M); O \n; Index: llvm/lib/Target/Sparc/SparcTargetMachine.cpp diff -u llvm/lib/Target/Sparc/SparcTargetMachine.cpp:1.44 llvm/lib/Target/Sparc/SparcTargetMachine.cpp:1.45 --- llvm/lib/Target/Sparc/SparcTargetMachine.cpp:1.44 Sat Apr 8 14:46:55 2006 +++ llvm/lib/Target/Sparc/SparcTargetMachine.cppTue May 2 20:29:57 2006 @@ -31,7 +31,8 @@ /// SparcTargetMachine ctor - Create an ILP32 architecture model /// SparcTargetMachine::SparcTargetMachine(const Module M, const std::string FS) - : TargetMachine(Sparc, false, 4, 4), + : TargetMachine(Sparc), +DataLayout(Sparc, false, 4, 4), Subtarget(M, FS), InstrInfo(Subtarget), FrameInfo(TargetFrameInfo::StackGrowsDown, 8, 0) { } Index: llvm/lib/Target/Sparc/SparcTargetMachine.h diff -u llvm/lib/Target/Sparc/SparcTargetMachine.h:1.12 llvm/lib/Target/Sparc/SparcTargetMachine.h:1.13 --- llvm/lib/Target/Sparc/SparcTargetMachine.h:1.12 Wed Mar 22 23:43:15 2006 +++ llvm/lib/Target/Sparc/SparcTargetMachine.h Tue May 2 20:29:57 2006 @@ -25,6 +25,7 @@ class Module; class SparcTargetMachine : public TargetMachine { + const TargetData DataLayout; // Calculates type size alignment SparcSubtarget Subtarget; SparcInstrInfo InstrInfo; TargetFrameInfo FrameInfo; @@ -37,7 +38,7 @@ virtual const MRegisterInfo *getRegisterInfo() const { return InstrInfo.getRegisterInfo(); } - + virtual const TargetData *getTargetData() const { return DataLayout; } static unsigned getModuleMatchQuality(const Module M); virtual bool addPassesToEmitFile(PassManager PM, std::ostream Out, ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.58 - 1.59 --- Log message: Extend printBasicBlockLabel a bit so that it can be used to print all basic block labels, consolidating the code to do so in one place for each target. --- Diffs of the changes: (+4 -4) SparcAsmPrinter.cpp |8 1 files changed, 4 insertions(+), 4 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.58 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.59 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.58 Sat Apr 22 13:53:45 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Tue May 2 00:37:32 2006 @@ -116,10 +116,10 @@ for (MachineFunction::const_iterator I = MF.begin(), E = MF.end(); I != E; ++I) { // Print a label for the basic block. -if (I != MF.begin()) - O .LBB Mang-getValueName(MF.getFunction ()) - _ I-getNumber () :\t! - I-getBasicBlock ()-getName () \n; +if (I != MF.begin()) { + printBasicBlockLabel(I, true); + O '\n'; +} for (MachineBasicBlock::const_iterator II = I-begin(), E = I-end(); II != E; ++II) { // Print the assembly for the instruction. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp SparcISelDAGToDAG.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.57 - 1.58 SparcISelDAGToDAG.cpp updated: 1.91 - 1.92 --- Log message: JumpTable support! What this represents is working asm and jit support for x86 and ppc for 100% dense switch statements when relocations are non-PIC. This support will be extended and enhanced in the coming days to support PIC, and less dense forms of jump tables. --- Diffs of the changes: (+3 -6) SparcAsmPrinter.cpp |8 ++-- SparcISelDAGToDAG.cpp |1 + 2 files changed, 3 insertions(+), 6 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.57 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.58 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.57 Thu Mar 9 00:14:35 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Sat Apr 22 13:53:45 2006 @@ -163,13 +163,9 @@ case MachineOperand::MO_UnextendedImmed: O (int)MO.getImmedValue(); break; - case MachineOperand::MO_MachineBasicBlock: { -MachineBasicBlock *MBBOp = MO.getMachineBasicBlock(); -O .LBB Mang-getValueName(MBBOp-getParent()-getFunction()) - _ MBBOp-getNumber () \t! - MBBOp-getBasicBlock ()-getName (); + case MachineOperand::MO_MachineBasicBlock: +printBasicBlockLabel(MO.getMachineBasicBlock()); return; - } case MachineOperand::MO_PCRelativeDisp: std::cerr Shouldn't use addPCDisp() when building Sparc MachineInstrs; abort (); Index: llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp diff -u llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp:1.91 llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp:1.92 --- llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp:1.91Sun Mar 26 19:32:24 2006 +++ llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp Sat Apr 22 13:53:45 2006 @@ -167,6 +167,7 @@ // Sparc doesn't have BRCOND either, it has BR_CC. setOperationAction(ISD::BRCOND, MVT::Other, Expand); + setOperationAction(ISD::BRIND, MVT::i32, Expand); setOperationAction(ISD::BR_CC, MVT::i32, Custom); setOperationAction(ISD::BR_CC, MVT::f32, Custom); setOperationAction(ISD::BR_CC, MVT::f64, Custom); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.56 - 1.57 --- Log message: Add support for 'special' llvm globals like debug info and static ctors/dtors. --- Diffs of the changes: (+6 -1) SparcAsmPrinter.cpp |7 ++- 1 files changed, 6 insertions(+), 1 deletion(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.56 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.57 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.56 Mon Feb 27 14:09:23 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Thu Mar 9 00:14:35 2006 @@ -239,8 +239,13 @@ const TargetData TD = TM.getTargetData(); // Print out module-level global variables here. - for (Module::const_global_iterator I = M.global_begin(), E = M.global_end(); I != E; ++I) + for (Module::const_global_iterator I = M.global_begin(), E = M.global_end(); + I != E; ++I) if (I-hasInitializer()) { // External global require no code + // Check to see if this is a special global used by LLVM, if so, emit it. + if (EmitSpecialLLVMGlobal(I)) +continue; + O \n\n; std::string name = Mang-getValueName(I); Constant *C = I-getInitializer(); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.55 - 1.56 --- Log message: Don't print constant initializers, they may span lines now. --- Diffs of the changes: (+0 -2) SparcAsmPrinter.cpp |2 -- 1 files changed, 2 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.55 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.56 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.55 Wed Feb 15 01:07:14 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Mon Feb 27 14:09:23 2006 @@ -293,8 +293,6 @@ O \t.size name , Size \n; O name :\t\t\t\t! ; WriteAsOperand(O, I, true, true, M); -O = ; -WriteAsOperand(O, C, false, false, M); O \n; EmitGlobalConstant(C); } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.54 - 1.55 --- Log message: Sparc actually *DOES* have a directive for emitting zeros. In fact, it requires it, because this: .bss X: .byte 0 results in the assembler warning: initialization in bss segment. Annoying. --- Diffs of the changes: (+1 -1) SparcAsmPrinter.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.54 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.55 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.54 Fri Feb 10 01:35:42 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Wed Feb 15 01:07:14 2006 @@ -40,7 +40,7 @@ Data16bitsDirective = \t.half\t; Data32bitsDirective = \t.word\t; Data64bitsDirective = 0; // .xword is only supported by V9. - ZeroDirective = 0; // no .zero or .space! + ZeroDirective = \t.skip\t; CommentString = !; ConstantPoolSection = \t.section \.rodata\,#alloc\n; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp SparcISelDAGToDAG.cpp SparcInstrInfo.td
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.53 - 1.54 SparcISelDAGToDAG.cpp updated: 1.82 - 1.83 SparcInstrInfo.td updated: 1.120 - 1.121 --- Log message: Use the auto-generated call matcher. Remove a broken impl of the frameaddr/returnaddr intrinsics. Autogen frameindex matcher --- Diffs of the changes: (+34 -61) SparcAsmPrinter.cpp | 14 -- SparcISelDAGToDAG.cpp | 67 -- SparcInstrInfo.td | 14 +++--- 3 files changed, 34 insertions(+), 61 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.53 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.54 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.53 Sat Feb 4 23:50:24 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Fri Feb 10 01:35:42 2006 @@ -57,7 +57,8 @@ } void printOperand(const MachineInstr *MI, int opNum); -void printMemOperand(const MachineInstr *MI, int opNum); +void printMemOperand(const MachineInstr *MI, int opNum, + const char *Modifier = 0); void printCCOperand(const MachineInstr *MI, int opNum); bool printInstruction(const MachineInstr *MI); // autogenerated. @@ -189,8 +190,17 @@ if (CloseParen) O ); } -void SparcAsmPrinter::printMemOperand(const MachineInstr *MI, int opNum) { +void SparcAsmPrinter::printMemOperand(const MachineInstr *MI, int opNum, + const char *Modifier) { printOperand(MI, opNum); + + // If this is an ADD operand, emit it like normal operands. + if (Modifier !strcmp(Modifier, arith)) { +O , ; +printOperand(MI, opNum+1); +return; + } + MachineOperand::MachineOperandType OpTy = MI-getOperand(opNum+1).getType(); if ((OpTy == MachineOperand::MO_VirtualRegister || Index: llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp diff -u llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp:1.82 llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp:1.83 --- llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp:1.82Thu Feb 9 01:17:49 2006 +++ llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp Fri Feb 10 01:35:42 2006 @@ -111,9 +111,6 @@ unsigned CC, bool isTailCall, SDOperand Callee, ArgListTy Args, SelectionDAG DAG); -virtual std::pairSDOperand, SDOperand - LowerFrameReturnAddress(bool isFrameAddr, SDOperand Chain, unsigned Depth, - SelectionDAG DAG); virtual MachineBasicBlock *InsertAtEndOfBasicBlock(MachineInstr *MI, MachineBasicBlock *MBB); @@ -595,8 +592,11 @@ // If the callee is a GlobalAddress node (quite common, every direct call is) // turn it into a TargetGlobalAddress node so that legalize doesn't hack it. + // Likewise ExternalSymbol - TargetExternalSymbol. if (GlobalAddressSDNode *G = dyn_castGlobalAddressSDNode(Callee)) Callee = DAG.getTargetGlobalAddress(G-getGlobal(), MVT::i32); + else if (ExternalSymbolSDNode *E = dyn_castExternalSymbolSDNode(Callee)) +Callee = DAG.getTargetExternalSymbol(E-getSymbol(), MVT::i32); std::vectorMVT::ValueType NodeTys; NodeTys.push_back(MVT::Other); // Returns a chain @@ -653,13 +653,6 @@ return std::make_pair(RetVal, Chain); } -std::pairSDOperand, SDOperand SparcTargetLowering:: -LowerFrameReturnAddress(bool isFrameAddr, SDOperand Chain, unsigned Depth, -SelectionDAG DAG) { - assert(0 Unimp); - abort(); -} - // Look at LHS/RHS/CC and see if they are a lowered setcc instruction. If so // set LHS/RHS and SPCC to the LHS/RHS of the setcc and SPCC to the condition. static void LookThroughSetCC(SDOperand LHS, SDOperand RHS, @@ -974,6 +967,9 @@ Offset = CurDAG-getTargetConstant(0, MVT::i32); return true; } + if (Addr.getOpcode() == ISD::TargetExternalSymbol || + Addr.getOpcode() == ISD::TargetGlobalAddress) +return false; // direct calls. if (Addr.getOpcode() == ISD::ADD) { if (ConstantSDNode *CN = dyn_castConstantSDNode(Addr.getOperand(1))) { @@ -1007,7 +1003,11 @@ bool SparcDAGToDAGISel::SelectADDRrr(SDOperand Addr, SDOperand R1, SDOperand R2) { - if (Addr.getOpcode() == ISD::FrameIndex) return false; + if (Addr.getOpcode() == ISD::FrameIndex) return false; + if (Addr.getOpcode() == ISD::TargetExternalSymbol || + Addr.getOpcode() == ISD::TargetGlobalAddress) +return false; // direct calls. + if (Addr.getOpcode() == ISD::ADD) { if (isaConstantSDNode(Addr.getOperand(1)) Predicate_simm13(Addr.getOperand(1).Val)) @@ -1042,21 +1042,6 @@ switch (N-getOpcode()) { default: break; - case ISD::FrameIndex: { -int FI = castFrameIndexSDNode(N)-getIndex(); -if (N-hasOneUse()) { - Result = CurDAG-SelectNodeTo(N, SP::ADDri, MVT::i32, -