| Index: src/IceCfg.cpp
|
| diff --git a/src/IceCfg.cpp b/src/IceCfg.cpp
|
| index 285b489ecce92ea61b7601add9664520fe872450..0ff94b4c6d58ebdbc2cda930514d87de520e927d 100644
|
| --- a/src/IceCfg.cpp
|
| +++ b/src/IceCfg.cpp
|
| @@ -197,20 +197,25 @@ void Cfg::addCallToProfileSummary() {
|
| void Cfg::translate() {
|
| if (hasError())
|
| return;
|
| + // Cache the possibly-overridden optimization level once translation begins.
|
| + // It would be nicer to do this in the constructor, but we need to wait until
|
| + // after setFunctionName() has a chance to be called.
|
| + OptimizationLevel =
|
| + getFlags().matchForceO2(getFunctionName(), getSequenceNumber())
|
| + ? Opt_2
|
| + : getFlags().getOptLevel();
|
| if (BuildDefs::timers()) {
|
| - const std::string TimingFocusOn = getFlags().getTimingFocusOn();
|
| - if (!TimingFocusOn.empty()) {
|
| - const std::string Name = getFunctionName().toString();
|
| - if (TimingFocusOn == "*" || TimingFocusOn == Name) {
|
| - setFocusedTiming();
|
| - getContext()->resetTimer(GlobalContext::TSK_Default);
|
| - }
|
| + if (getFlags().matchTimingFocus(getFunctionName(), getSequenceNumber())) {
|
| + setFocusedTiming();
|
| + getContext()->resetTimer(GlobalContext::TSK_Default);
|
| }
|
| }
|
| if (BuildDefs::dump()) {
|
| - if (isVerbose(IceV_Status)) {
|
| + if (isVerbose(IceV_Status) &&
|
| + getFlags().matchTestStatus(getFunctionName(), getSequenceNumber())) {
|
| getContext()->getStrDump() << ">>>Translating "
|
| - << getFunctionNameAndSize() << "\n";
|
| + << getFunctionNameAndSize()
|
| + << " seq=" << getSequenceNumber() << "\n";
|
| }
|
| }
|
| TimerMarker T_func(getContext(), getFunctionName().toStringOrEmpty());
|
| @@ -222,7 +227,7 @@ void Cfg::translate() {
|
| profileBlocks();
|
| // TODO(jpp): this is fragile, at best. Figure out a better way of
|
| // detecting exit functions.
|
| - if (GlobalContext::matchSymbolName(getFunctionName(), "exit")) {
|
| + if (getFunctionName().toStringOrEmpty() == "exit") {
|
| addCallToProfileSummary();
|
| }
|
| dump("Profiled CFG");
|
|
|