Skip to content

Commit f4e8f6d

Browse files
authored
[Reassociate] Use a reference to DataLayout instead of copying the underlying string data (NFC) (#128269)
I noticed this when looking at all allocations by clang. For a medium sized file this was around 6000 calls to operator new, although i suspect there were more allocations in total as the SmallVectors in DataLayout may have their own allocations in some cases. In a follow-up i'm tempted to make the DataLayout copy constructor private, to avoid this in future. There are a few tests which copy the DataLayout, and perhaps need to (I didn't check yet), but we could provide a clone() method for them if needed. Its only accidental copying I think we should consider avoiding, not people who really do need to copy it for reasons.
1 parent bac4171 commit f4e8f6d

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

llvm/lib/Transforms/Scalar/Reassociate.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ static bool LinearizeExprTree(Instruction *I,
420420
using LeafMap = DenseMap<Value *, uint64_t>;
421421
LeafMap Leaves; // Leaf -> Total weight so far.
422422
SmallVector<Value *, 8> LeafOrder; // Ensure deterministic leaf output order.
423-
const DataLayout DL = I->getDataLayout();
423+
const DataLayout &DL = I->getDataLayout();
424424

425425
#ifndef NDEBUG
426426
SmallPtrSet<Value *, 8> Visited; // For checking the iteration scheme.

0 commit comments

Comments
 (0)