MC: Add TargetMachine support for setting the value of MCRelaxAll with

-filetype=obj.

llvm-svn: 104747
This commit is contained in:
Daniel Dunbar 2010-05-26 21:48:55 +00:00
parent de2291a717
commit b33dfbcba4
3 changed files with 17 additions and 4 deletions

View File

@ -101,7 +101,9 @@ protected: // Can only create subclasses.
/// AsmInfo - Contains target specific asm information.
///
const MCAsmInfo *AsmInfo;
unsigned MCRelaxAll : 1;
public:
virtual ~TargetMachine();
@ -158,6 +160,14 @@ public:
///
virtual const TargetELFWriterInfo *getELFWriterInfo() const { return 0; }
/// hasMCRelaxAll - Check whether all machine code instructions should be
/// relaxed.
bool hasMCRelaxAll() const { return MCRelaxAll; }
/// setMCRelaxAll - Set whether all machine code instructions should be
/// relaxed.
void setMCRelaxAll(bool Value) { MCRelaxAll = Value; }
/// getRelocationModel - Returns the code generation relocation model. The
/// choices are static, PIC, and dynamic-no-pic, and target default.
static Reloc::Model getRelocationModel();

View File

@ -160,8 +160,10 @@ bool LLVMTargetMachine::addPassesToEmitFile(PassManagerBase &PM,
TargetAsmBackend *TAB = getTarget().createAsmBackend(TargetTriple);
if (MCE == 0 || TAB == 0)
return true;
AsmStreamer.reset(createMachOStreamer(*Context, *TAB, Out, MCE));
AsmStreamer.reset(getTarget().createObjectStreamer(TargetTriple, *Context,
*TAB, Out, MCE,
hasMCRelaxAll()));
break;
}
case CGFT_Null:

View File

@ -212,7 +212,8 @@ FunctionSections("ffunction-sections",
//
TargetMachine::TargetMachine(const Target &T)
: TheTarget(T), AsmInfo(0) {
: TheTarget(T), AsmInfo(0),
MCRelaxAll(false) {
// Typically it will be subtargets that will adjust FloatABIType from Default
// to Soft or Hard.
if (UseSoftFloat)