summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/CodeEmitterGen.cpp
diff options
context:
space:
mode:
authorDavid Greene <greened@obbligato.org>2011-07-29 19:07:00 +0000
committerDavid Greene <greened@obbligato.org>2011-07-29 19:07:00 +0000
commitb3da8123c0a440f4b7115ecbcef2ccb85e328b68 (patch)
tree825f13fa25380b19a824b723f1b1f56101e57f20 /llvm/utils/TableGen/CodeEmitterGen.cpp
parent4bd5aebaeadf22ef74a716710009056cb511cc14 (diff)
downloadbcm5719-llvm-b3da8123c0a440f4b7115ecbcef2ccb85e328b68.tar.gz
bcm5719-llvm-b3da8123c0a440f4b7115ecbcef2ccb85e328b68.zip
[AVX] Remove Mutating Members from Inits
Get rid of all Init members that modify internal state. This is in preparation for making references to Inits const. llvm-svn: 136483
Diffstat (limited to 'llvm/utils/TableGen/CodeEmitterGen.cpp')
-rw-r--r--llvm/utils/TableGen/CodeEmitterGen.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/utils/TableGen/CodeEmitterGen.cpp b/llvm/utils/TableGen/CodeEmitterGen.cpp
index d828dfc25db..8b5cddae25e 100644
--- a/llvm/utils/TableGen/CodeEmitterGen.cpp
+++ b/llvm/utils/TableGen/CodeEmitterGen.cpp
@@ -41,19 +41,23 @@ void CodeEmitterGen::reverseBits(std::vector<Record*> &Insts) {
BitsInit *BI = R->getValueAsBitsInit("Inst");
unsigned numBits = BI->getNumBits();
- BitsInit *NewBI = new BitsInit(numBits);
+
+ SmallVector<Init *, 16> NewBits(numBits);
+
for (unsigned bit = 0, end = numBits / 2; bit != end; ++bit) {
unsigned bitSwapIdx = numBits - bit - 1;
Init *OrigBit = BI->getBit(bit);
Init *BitSwap = BI->getBit(bitSwapIdx);
- NewBI->setBit(bit, BitSwap);
- NewBI->setBit(bitSwapIdx, OrigBit);
+ NewBits[bit] = BitSwap;
+ NewBits[bitSwapIdx] = OrigBit;
}
if (numBits % 2) {
unsigned middle = (numBits + 1) / 2;
- NewBI->setBit(middle, BI->getBit(middle));
+ NewBits[middle] = BI->getBit(middle);
}
+ BitsInit *NewBI = new BitsInit(ArrayRef<Init *>(NewBits));
+
// Update the bits in reversed order so that emitInstrOpBits will get the
// correct endianness.
R->getValue("Inst")->setValue(NewBI);
OpenPOWER on IntegriCloud