diff options
author | Hans Wennborg <hans@hanshq.net> | 2012-09-26 14:01:53 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2012-09-26 14:01:53 +0000 |
commit | 50b7d70707960155ad28ff23d7622009b7b97eb3 (patch) | |
tree | 4dc660eff70445606f083e346473a825126d190f /lib/Transforms/Utils/SimplifyCFG.cpp | |
parent | 565df79b74126e1f2a2be8e2c55c5bb506270f26 (diff) |
Address Duncan's comments on r164684:
- Put statistics in alphabetical order
- Don't use getZextValue when building TableInt, just use APInts
- Introduce Create{Z,S}ExtOrTrunc in IRBuilder.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164696 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/SimplifyCFG.cpp')
-rw-r--r-- | lib/Transforms/Utils/SimplifyCFG.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/lib/Transforms/Utils/SimplifyCFG.cpp b/lib/Transforms/Utils/SimplifyCFG.cpp index d7468a1890..299c0596da 100644 --- a/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/lib/Transforms/Utils/SimplifyCFG.cpp @@ -58,10 +58,10 @@ static cl::opt<bool> SinkCommon("simplifycfg-sink-common", cl::Hidden, cl::init(true), cl::desc("Sink common instructions down to the end block")); -STATISTIC(NumSpeculations, "Number of speculative executed instructions"); -STATISTIC(NumLookupTables, "Number of switch instructions turned into lookup tables"); STATISTIC(NumBitMaps, "Number of switch instructions turned into bitmaps"); +STATISTIC(NumLookupTables, "Number of switch instructions turned into lookup tables"); STATISTIC(NumSinkCommons, "Number of common instructions sunk down to the end block"); +STATISTIC(NumSpeculations, "Number of speculative executed instructions"); namespace { /// ValueEqualityComparisonCase - Represents a case of a switch. @@ -3347,7 +3347,8 @@ SwitchLookupTable::SwitchLookupTable(Module &M, APInt TableInt(TableSize * IT->getBitWidth(), 0); for (uint64_t I = TableSize; I > 0; --I) { TableInt <<= IT->getBitWidth(); - TableInt |= cast<ConstantInt>(TableContents[I - 1])->getZExtValue(); + ConstantInt *Val = cast<ConstantInt>(TableContents[I - 1]); + TableInt |= Val->getValue().zext(TableInt.getBitWidth()); } BitMap = ConstantInt::get(M.getContext(), TableInt); BitMapElementTy = IT; @@ -3379,12 +3380,7 @@ Value *SwitchLookupTable::BuildLookup(Value *Index, IRBuilder<> &Builder) { // Cast Index to the same type as the bitmap. // Note: The Index is <= the number of elements in the table, so // truncating it to the width of the bitmask is safe. - Value *ShiftAmt = Index; - IntegerType *IndexTy = cast<IntegerType>(Index->getType()); - if (IndexTy->getBitWidth() < MapTy->getBitWidth()) - ShiftAmt = Builder.CreateZExt(ShiftAmt, MapTy, "switch.zext"); - else if (IndexTy->getBitWidth() > MapTy->getBitWidth()) - ShiftAmt = Builder.CreateTrunc(ShiftAmt, MapTy, "switch.trunc"); + Value *ShiftAmt = Builder.CreateZExtOrTrunc(Index, MapTy, "switch.cast"); // Multiply the shift amount by the element width. ShiftAmt = Builder.CreateMul(ShiftAmt, |