From 14b9ff70e18db7a59146c97cc9627cbd53ed6164 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Fri, 12 Mar 2010 21:00:45 +0000 Subject: [PATCH] MC: Constify MCAsmLayout argument to MCExpr::EvaluteAs... llvm-svn: 98380 --- include/llvm/MC/MCAsmLayout.h | 2 +- include/llvm/MC/MCAssembler.h | 11 ++++++----- include/llvm/MC/MCExpr.h | 12 ++++++------ lib/MC/MCExpr.cpp | 5 +++-- lib/Target/X86/X86MCTargetExpr.cpp | 2 +- lib/Target/X86/X86MCTargetExpr.h | 2 +- 6 files changed, 18 insertions(+), 16 deletions(-) diff --git a/include/llvm/MC/MCAsmLayout.h b/include/llvm/MC/MCAsmLayout.h index d448625320c..27bdbe9cbf5 100644 --- a/include/llvm/MC/MCAsmLayout.h +++ b/include/llvm/MC/MCAsmLayout.h @@ -28,7 +28,7 @@ public: MCAsmLayout(MCAssembler &_Assembler) : Assembler(_Assembler) {} /// Get the assembler object this is a layout for. - MCAssembler &getAssembler() { return Assembler; } + MCAssembler &getAssembler() const { return Assembler; } }; } // end namespace llvm diff --git a/include/llvm/MC/MCAssembler.h b/include/llvm/MC/MCAssembler.h index f0efb6ce4a2..4db1c012b08 100644 --- a/include/llvm/MC/MCAssembler.h +++ b/include/llvm/MC/MCAssembler.h @@ -204,7 +204,8 @@ class MCAlignFragment : public MCFragment { /// cannot be satisfied in this width then this fragment is ignored. unsigned MaxBytesToEmit; - /// EmitNops - true when aligning code and optimal nops to be used for filling + /// EmitNops - true when aligning code and optimal nops to be used for + /// filling. bool EmitNops; public: @@ -704,8 +705,8 @@ public: /// @name Backend Data Access /// @{ - MCSectionData &getSectionData(const MCSection &Section) { - MCSectionData *&Entry = SectionMap[&Section]; + MCSectionData &getSectionData(const MCSection &Section) const { + MCSectionData *Entry = SectionMap.lookup(&Section); assert(Entry && "Missing section data!"); return *Entry; } @@ -721,8 +722,8 @@ public: return *Entry; } - MCSymbolData &getSymbolData(const MCSymbol &Symbol) { - MCSymbolData *&Entry = SymbolMap[&Symbol]; + MCSymbolData &getSymbolData(const MCSymbol &Symbol) const { + MCSymbolData *Entry = SymbolMap.lookup(&Symbol); assert(Entry && "Missing symbol data!"); return *Entry; } diff --git a/include/llvm/MC/MCExpr.h b/include/llvm/MC/MCExpr.h index 9daddb2923d..5f8163f19e4 100644 --- a/include/llvm/MC/MCExpr.h +++ b/include/llvm/MC/MCExpr.h @@ -67,7 +67,7 @@ public: /// values. If not given, then only non-symbolic expressions will be /// evaluated. /// @result - True on success. - bool EvaluateAsAbsolute(int64_t &Res, MCAsmLayout *Layout = 0) const; + bool EvaluateAsAbsolute(int64_t &Res, const MCAsmLayout *Layout = 0) const; /// EvaluateAsRelocatable - Try to evaluate the expression to a relocatable /// value, i.e. an expression of the fixed form (a - b + constant). @@ -75,13 +75,13 @@ public: /// @param Res - The relocatable value, if evaluation succeeds. /// @param Layout - The assembler layout object to use for evaluating values. /// @result - True on success. - bool EvaluateAsRelocatable(MCValue &Res, MCAsmLayout *Layout = 0) const; + bool EvaluateAsRelocatable(MCValue &Res, const MCAsmLayout *Layout = 0) const; /// @} static bool classof(const MCExpr *) { return true; } }; - + inline raw_ostream &operator<<(raw_ostream &OS, const MCExpr &E) { E.print(OS); return OS; @@ -351,12 +351,12 @@ protected: MCTargetExpr() : MCExpr(Target) {} virtual ~MCTargetExpr() {} public: - + virtual void PrintImpl(raw_ostream &OS) const = 0; virtual bool EvaluateAsRelocatableImpl(MCValue &Res, - MCAsmLayout *Layout) const = 0; + const MCAsmLayout *Layout) const = 0; + - static bool classof(const MCExpr *E) { return E->getKind() == MCExpr::Target; } diff --git a/lib/MC/MCExpr.cpp b/lib/MC/MCExpr.cpp index 0ca2ad8761b..8d84f53037d 100644 --- a/lib/MC/MCExpr.cpp +++ b/lib/MC/MCExpr.cpp @@ -145,7 +145,7 @@ void MCTargetExpr::Anchor() {} /* *** */ -bool MCExpr::EvaluateAsAbsolute(int64_t &Res, MCAsmLayout *Layout) const { +bool MCExpr::EvaluateAsAbsolute(int64_t &Res, const MCAsmLayout *Layout) const { MCValue Value; if (!EvaluateAsRelocatable(Value, Layout) || !Value.isAbsolute()) @@ -177,7 +177,8 @@ static bool EvaluateSymbolicAdd(const MCValue &LHS, const MCSymbol *RHS_A, return true; } -bool MCExpr::EvaluateAsRelocatable(MCValue &Res, MCAsmLayout *Layout) const { +bool MCExpr::EvaluateAsRelocatable(MCValue &Res, + const MCAsmLayout *Layout) const { switch (getKind()) { case Target: return cast(this)->EvaluateAsRelocatableImpl(Res, Layout); diff --git a/lib/Target/X86/X86MCTargetExpr.cpp b/lib/Target/X86/X86MCTargetExpr.cpp index de56d313076..cfcf70221d1 100644 --- a/lib/Target/X86/X86MCTargetExpr.cpp +++ b/lib/Target/X86/X86MCTargetExpr.cpp @@ -37,7 +37,7 @@ void X86MCTargetExpr::PrintImpl(raw_ostream &OS) const { } bool X86MCTargetExpr::EvaluateAsRelocatableImpl(MCValue &Res, - MCAsmLayout *Layout) const { + const MCAsmLayout *Layout) const { // FIXME: I don't know if this is right, it followed MCSymbolRefExpr. // Evaluate recursively if this is a variable. diff --git a/lib/Target/X86/X86MCTargetExpr.h b/lib/Target/X86/X86MCTargetExpr.h index 56011eb053f..a82e142a07f 100644 --- a/lib/Target/X86/X86MCTargetExpr.h +++ b/lib/Target/X86/X86MCTargetExpr.h @@ -41,7 +41,7 @@ public: MCContext &Ctx); void PrintImpl(raw_ostream &OS) const; - bool EvaluateAsRelocatableImpl(MCValue &Res, MCAsmLayout *Layout) const; + bool EvaluateAsRelocatableImpl(MCValue &Res, const MCAsmLayout *Layout) const; }; } // end namespace llvm