Index: lib/Transforms/Utils/SimplifyCFG.cpp =================================================================== --- lib/Transforms/Utils/SimplifyCFG.cpp +++ lib/Transforms/Utils/SimplifyCFG.cpp @@ -2968,6 +2968,8 @@ PStore->getAAMetadata(AAMD, /*Merge=*/false); PStore->getAAMetadata(AAMD, /*Merge=*/true); SI->setAAMetadata(AAMD); + if (unsigned Alignment = PStore->getAlignment()) + SI->setAlignment(Alignment); QStore->eraseFromParent(); PStore->eraseFromParent(); Index: test/Transforms/SimplifyCFG/preserve-store-alignment.ll =================================================================== --- test/Transforms/SimplifyCFG/preserve-store-alignment.ll +++ test/Transforms/SimplifyCFG/preserve-store-alignment.ll @@ -25,7 +25,7 @@ ; CHECK-NEXT: [[TMP7:%.*]] = xor i1 [[TOBOOL5]], true ; CHECK-NEXT: [[TMP8:%.*]] = or i1 [[TMP6]], [[TMP7]] ; CHECK-NEXT: br i1 [[TMP8]], label [[TMP9:%.*]], label [[TMP10:%.*]] -; CHECK: store <2 x i64> [[DOT]], <2 x i64>* bitcast (i64* getelementptr inbounds (%struct.Counters, %struct.Counters* @counters, i64 0, i32 1) to <2 x i64>*) +; CHECK: store <2 x i64> [[DOT]], <2 x i64>* bitcast (i64* getelementptr inbounds (%struct.Counters, %struct.Counters* @counters, i64 0, i32 1) to <2 x i64>*), align 8 ; CHECK-NEXT: br label [[TMP10]] ; CHECK: ret i32 0 ;