Skip to content

Commit 829be3d

Browse files
committed
IRGen: When computing dynamic offsets, peephole away an add of zero
1 parent a25118d commit 829be3d

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

lib/IRGen/MetadataLayout.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,14 +147,15 @@ Offset NominalMetadataLayout::emitOffset(IRGenFunction &IGF,
147147
IGF.IGM.getPointerAlignment());
148148

149149
// FIXME: Should this be an invariant load?
150-
auto *offsetBaseVal =
151-
IGF.Builder.CreateLoad(offsetBaseAddr, "base");
150+
llvm::Value *offsetVal = IGF.Builder.CreateLoad(offsetBaseAddr, "base");
152151

153152
auto relativeOffset = offset.getRelativeOffset().getValue();
154-
auto *offsetVal =
155-
IGF.Builder.CreateAdd(offsetBaseVal,
156-
llvm::ConstantInt::get(IGF.IGM.SizeTy,
157-
relativeOffset));
153+
if (relativeOffset != 0) {
154+
offsetVal = IGF.Builder.CreateAdd(offsetVal,
155+
llvm::ConstantInt::get(IGF.IGM.SizeTy,
156+
relativeOffset));
157+
}
158+
158159
return Offset(offsetVal);
159160
}
160161

0 commit comments

Comments
 (0)