Subzero: Add "--verbose=status" option. This just prints the function being translated, once per function. This is useful if there is a crash or fatal error somewhere, and you want to quickly discover which function to set -verbose-focus on. Also, fixes some warnings/errors in the MINIMAL build. BUG= none R=kschimpf@google.com Review URL: https://codereview.chromium.org/1439983002 .
diff --git a/src/IceCfg.cpp b/src/IceCfg.cpp index 3211c30..9bc1ba5 100644 --- a/src/IceCfg.cpp +++ b/src/IceCfg.cpp
@@ -181,6 +181,8 @@ FunctionTimer.reset(new TimerMarker( getContext()->getTimerID(GlobalContext::TSK_Funcs, Name), getContext(), GlobalContext::TSK_Funcs)); + if (isVerbose(IceV_Status)) + getContext()->getStrDump() << ">>>Translating " << Name << "\n"; } TimerMarker T(TimerStack::TT_translate, this);
diff --git a/src/IceCfg.h b/src/IceCfg.h index 92a1680..b39673b 100644 --- a/src/IceCfg.h +++ b/src/IceCfg.h
@@ -50,10 +50,15 @@ GlobalContext *getContext() const { return Ctx; } uint32_t getSequenceNumber() const { return SequenceNumber; } + static constexpr VerboseMask defaultVerboseMask() { + return IceV_All & ~IceV_Status; + } /// Returns true if any of the specified options in the verbose mask are set. /// If the argument is omitted, it checks if any verbose options at all are /// set. - bool isVerbose(VerboseMask Mask = IceV_All) const { return VMask & Mask; } + bool isVerbose(VerboseMask Mask = defaultVerboseMask()) const { + return VMask & Mask; + } void setVerbose(VerboseMask Mask) { VMask = Mask; } /// \name Manage the name and return type of the function being translated.
diff --git a/src/IceClFlags.cpp b/src/IceClFlags.cpp index 1e194a1..fedd422 100644 --- a/src/IceClFlags.cpp +++ b/src/IceClFlags.cpp
@@ -269,6 +269,8 @@ clEnumValN(Ice::IceV_Folding, "fold", "Instruction folding details"), clEnumValN(Ice::IceV_RMW, "rmw", "ReadModifyWrite optimization"), clEnumValN(Ice::IceV_Loop, "loop", "Loop nest depth analysis"), + clEnumValN(Ice::IceV_Status, "status", + "Print the name of the function being translated"), clEnumValN(Ice::IceV_All, "all", "Use all verbose options"), clEnumValN(Ice::IceV_Most, "most", "Use all verbose options except 'regalloc'"),
diff --git a/src/IceDefs.h b/src/IceDefs.h index d73f9e7..6fd73f5 100644 --- a/src/IceDefs.h +++ b/src/IceDefs.h
@@ -239,6 +239,7 @@ IceV_Folding = 1 << 11, IceV_RMW = 1 << 12, IceV_Loop = 1 << 13, + IceV_Status = 1 << 14, IceV_All = ~IceV_None, IceV_Most = IceV_All & ~IceV_LinearScan };
diff --git a/src/IceGlobalContext.cpp b/src/IceGlobalContext.cpp index cac253b..fbdcd1b 100644 --- a/src/IceGlobalContext.cpp +++ b/src/IceGlobalContext.cpp
@@ -379,8 +379,9 @@ void GlobalContext::lowerGlobals(const IceString &SectionSuffix) { TimerMarker T(TimerStack::TT_emitGlobalInitializers, this); - const bool DumpGlobalVariables = BuildDefs::dump() && Flags.getVerbose() && - Flags.getVerboseFocusOn().empty(); + const bool DumpGlobalVariables = + BuildDefs::dump() && (Flags.getVerbose() & Cfg::defaultVerboseMask()) && + Flags.getVerboseFocusOn().empty(); if (DumpGlobalVariables) { OstreamLocker L(this); Ostream &Stream = getStrDump();
diff --git a/src/IceInstX86BaseImpl.h b/src/IceInstX86BaseImpl.h index 80a1f6b..2c3bfe2 100644 --- a/src/IceInstX86BaseImpl.h +++ b/src/IceInstX86BaseImpl.h
@@ -1237,6 +1237,7 @@ if (!BuildDefs::dump()) return; TargetLowering *Target = Func->getTarget(); + (void)Target; assert(static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( Target) ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); @@ -1246,6 +1247,7 @@ template <class Machine> void InstX86Blendvps<Machine>::emitIAS(const Cfg *Func) const { TargetLowering *Target = Func->getTarget(); + (void)Target; assert(static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( Target) ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); @@ -1260,6 +1262,7 @@ if (!BuildDefs::dump()) return; TargetLowering *Target = Func->getTarget(); + (void)Target; assert(static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( Target) ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); @@ -1269,6 +1272,7 @@ template <class Machine> void InstX86Pblendvb<Machine>::emitIAS(const Cfg *Func) const { TargetLowering *Target = Func->getTarget(); + (void)Target; assert(static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( Target) ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); @@ -1376,6 +1380,7 @@ void InstX86Insertps<Machine>::emitIAS(const Cfg *Func) const { assert(this->getSrcSize() == 3); TargetLowering *Target = Func->getTarget(); + (void)Target; assert(static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( Target) ->getInstructionSet() >= InstX86Base<Machine>::Traits::SSE4_1); @@ -2308,6 +2313,7 @@ // point value between a vector and a scalar (which movss is used for). Clean // this up. TargetLowering *Target = Func->getTarget(); + (void)Target; assert(Target->typeWidthInBytesOnStack(DestTy) == Target->typeWidthInBytesOnStack(SrcTy)); const Operand *NewSrc = Src; @@ -2786,6 +2792,7 @@ assert(this->getSrcSize() == 2); // pextrb and pextrd are SSE4.1 instructions. TargetLowering *Target = Func->getTarget(); + (void)Target; assert(this->getSrc(0)->getType() == IceType_v8i16 || this->getSrc(0)->getType() == IceType_v8i1 || static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( @@ -2815,6 +2822,7 @@ Type DispatchTy = InstX86Base<Machine>::Traits::getInVectorElementType( this->getSrc(0)->getType()); TargetLowering *Target = Func->getTarget(); + (void)Target; assert(DispatchTy == IceType_i16 || static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( Target) @@ -2846,6 +2854,7 @@ assert(this->getSrcSize() == 3); // pinsrb and pinsrd are SSE4.1 instructions. TargetLowering *Target = Func->getTarget(); + (void)Target; assert(this->getDest()->getType() == IceType_v8i16 || this->getDest()->getType() == IceType_v8i1 || static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( @@ -2883,6 +2892,7 @@ const Operand *Src0 = this->getSrc(1); Type DispatchTy = Src0->getType(); TargetLowering *Target = Func->getTarget(); + (void)Target; assert(DispatchTy == IceType_i16 || static_cast<typename InstX86Base<Machine>::Traits::TargetLowering *>( Target)