Index: src/IceCfg.cpp |
diff --git a/src/IceCfg.cpp b/src/IceCfg.cpp |
index 1965fe2d5a82fffac65a1ac22d46cb640a10c774..e5a71aa49866104f9674bb1d762a2ddf89c83803 100644 |
--- a/src/IceCfg.cpp |
+++ b/src/IceCfg.cpp |
@@ -34,23 +34,21 @@ |
namespace Ice { |
Cfg::Cfg(GlobalContext *Ctx, uint32_t SequenceNumber) |
- : Ctx(Ctx), SequenceNumber(SequenceNumber), |
- VMask(Ctx->getFlags().getVerbose()), FunctionName(), |
- NextInstNumber(Inst::NumberInitial), Live(nullptr) { |
+ : Ctx(Ctx), SequenceNumber(SequenceNumber), VMask(getFlags().getVerbose()), |
+ FunctionName(), NextInstNumber(Inst::NumberInitial), Live(nullptr) { |
Allocator.reset(new ArenaAllocator()); |
NodeStrings.reset(new StringPool); |
VarStrings.reset(new StringPool); |
CfgLocalAllocatorScope _(this); |
- Target = |
- TargetLowering::createLowering(Ctx->getFlags().getTargetArch(), this); |
+ Target = TargetLowering::createLowering(getFlags().getTargetArch(), this); |
VMetadata.reset(new VariablesMetadata(this)); |
TargetAssembler = Target->createAssembler(); |
- if (Ctx->getFlags().getRandomizeAndPoolImmediatesOption() == RPI_Randomize) { |
+ if (getFlags().getRandomizeAndPoolImmediatesOption() == RPI_Randomize) { |
// If -randomize-pool-immediates=randomize, create a random number |
// generator to generate a cookie for constant blinding. |
- RandomNumberGenerator RNG(Ctx->getFlags().getRandomSeed(), |
- RPE_ConstantBlinding, this->SequenceNumber); |
+ RandomNumberGenerator RNG(getFlags().getRandomSeed(), RPE_ConstantBlinding, |
+ this->SequenceNumber); |
ConstantBlindingCookie = |
(uint32_t)RNG.next((uint64_t)std::numeric_limits<uint32_t>::max() + 1); |
} |
@@ -58,7 +56,7 @@ Cfg::Cfg(GlobalContext *Ctx, uint32_t SequenceNumber) |
Cfg::~Cfg() { |
assert(CfgAllocatorTraits::current() == nullptr); |
- if (GlobalContext::getFlags().getDumpStrings()) { |
+ if (getFlags().getDumpStrings()) { |
OstreamLocker _(Ctx); |
Ostream &Str = Ctx->getStrDump(); |
getNodeStrings()->dump(Str); |
@@ -200,8 +198,7 @@ void Cfg::translate() { |
if (hasError()) |
return; |
if (BuildDefs::dump()) { |
- const std::string TimingFocusOn = |
- getContext()->getFlags().getTimingFocusOn(); |
+ const std::string TimingFocusOn = getFlags().getTimingFocusOn(); |
const std::string Name = getFunctionName().toString(); |
if (TimingFocusOn == "*" || TimingFocusOn == Name) { |
setFocusedTiming(); |
@@ -218,7 +215,7 @@ void Cfg::translate() { |
dump("Initial CFG"); |
- if (getContext()->getFlags().getEnableBlockProfile()) { |
+ if (getFlags().getEnableBlockProfile()) { |
profileBlocks(); |
// TODO(jpp): this is fragile, at best. Figure out a better way of |
// detecting exit functions. |
@@ -456,14 +453,14 @@ void getRandomPostOrder(CfgNode *Node, BitVector &ToVisit, |
} // end of anonymous namespace |
void Cfg::shuffleNodes() { |
- if (!Ctx->getFlags().getReorderBasicBlocks()) |
+ if (!getFlags().getReorderBasicBlocks()) |
return; |
NodeList ReversedReachable; |
NodeList Unreachable; |
BitVector ToVisit(Nodes.size(), true); |
// Create Random number generator for function reordering |
- RandomNumberGenerator RNG(Ctx->getFlags().getRandomSeed(), |
+ RandomNumberGenerator RNG(getFlags().getRandomSeed(), |
RPE_BasicBlockReordering, SequenceNumber); |
// Traverse from entry node. |
getRandomPostOrder(getEntryNode(), ToVisit, ReversedReachable, &RNG); |
@@ -779,10 +776,10 @@ void Cfg::doAddressOpt() { |
} |
void Cfg::doNopInsertion() { |
- if (!Ctx->getFlags().getShouldDoNopInsertion()) |
+ if (!getFlags().getShouldDoNopInsertion()) |
return; |
TimerMarker T(TimerStack::TT_doNopInsertion, this); |
- RandomNumberGenerator RNG(Ctx->getFlags().getRandomSeed(), RPE_NopInsertion, |
+ RandomNumberGenerator RNG(getFlags().getRandomSeed(), RPE_NopInsertion, |
SequenceNumber); |
for (CfgNode *Node : Nodes) |
Node->doNopInsertion(RNG); |
@@ -960,7 +957,7 @@ void Cfg::contractEmptyNodes() { |
// contain only redundant assignments. As such, we disable this pass when |
// DecorateAsm is specified. This may make the resulting code look more |
// branchy, but it should have no effect on the register assignments. |
- if (Ctx->getFlags().getDecorateAsm()) |
+ if (getFlags().getDecorateAsm()) |
return; |
for (CfgNode *Node : Nodes) { |
Node->contractIfEmpty(); |
@@ -992,9 +989,9 @@ void Cfg::emitTextHeader(GlobalString Name, GlobalContext *Ctx, |
return; |
Ostream &Str = Ctx->getStrEmit(); |
Str << "\t.text\n"; |
- if (Ctx->getFlags().getFunctionSections()) |
+ if (getFlags().getFunctionSections()) |
Str << "\t.section\t.text." << Name << ",\"ax\",%progbits\n"; |
- if (!Asm->getInternal() || Ctx->getFlags().getDisableInternal()) { |
+ if (!Asm->getInternal() || getFlags().getDisableInternal()) { |
Str << "\t.globl\t" << Name << "\n"; |
Str << "\t.type\t" << Name << ",%function\n"; |
} |
@@ -1012,7 +1009,7 @@ void Cfg::deleteJumpTableInsts() { |
} |
void Cfg::emitJumpTables() { |
- switch (Ctx->getFlags().getOutFileType()) { |
+ switch (getFlags().getOutFileType()) { |
case FT_Elf: |
case FT_Iasm: { |
// The emission needs to be delayed until the after the text section so |
@@ -1040,7 +1037,7 @@ void Cfg::emit() { |
if (!BuildDefs::dump()) |
return; |
TimerMarker T(TimerStack::TT_emitAsm, this); |
- if (Ctx->getFlags().getDecorateAsm()) { |
+ if (getFlags().getDecorateAsm()) { |
renumberInstructions(); |
getVMetadata()->init(VMK_Uses); |
liveness(Liveness_Basic); |
@@ -1049,11 +1046,11 @@ void Cfg::emit() { |
OstreamLocker L(Ctx); |
Ostream &Str = Ctx->getStrEmit(); |
const Assembler *Asm = getAssembler<>(); |
- const bool NeedSandboxing = Ctx->getFlags().getUseSandboxing(); |
+ const bool NeedSandboxing = getFlags().getUseSandboxing(); |
emitTextHeader(FunctionName, Ctx, Asm); |
deleteJumpTableInsts(); |
- if (Ctx->getFlags().getDecorateAsm()) { |
+ if (getFlags().getDecorateAsm()) { |
for (Variable *Var : getVariables()) { |
if (Var->getStackOffset() && !Var->isRematerializable()) { |
Str << "\t" << Var->getSymbolicStackOffset(this) << " = " |
@@ -1077,7 +1074,7 @@ void Cfg::emitIAS() { |
// The emitIAS() routines emit into the internal assembler buffer, so there's |
// no need to lock the streams. |
deleteJumpTableInsts(); |
- const bool NeedSandboxing = Ctx->getFlags().getUseSandboxing(); |
+ const bool NeedSandboxing = getFlags().getUseSandboxing(); |
for (CfgNode *Node : Nodes) { |
if (NeedSandboxing && Node->needsAlignment()) |
getAssembler()->alignCfgNode(); |
@@ -1118,7 +1115,7 @@ void Cfg::dump(const char *Message) { |
// Print function name+args |
if (isVerbose(IceV_Instructions)) { |
Str << "define "; |
- if (getInternal() && !Ctx->getFlags().getDisableInternal()) |
+ if (getInternal() && !getFlags().getDisableInternal()) |
Str << "internal "; |
Str << ReturnType << " @" << getFunctionName() << "("; |
for (SizeT i = 0; i < Args.size(); ++i) { |