Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/Transforms/Attributor/ArgumentPromotion/alignment.ll
Show First 20 Lines • Show All 164 Lines • ▼ Show 20 Lines | |||||
; IS__CGSCC_OPM-NEXT: [[C:%.*]] = call i32 @test(i32* noalias nocapture nofree noundef nonnull readonly align 4 dereferenceable(4) [[A]], i64* noalias nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) [[B]]) #[[ATTR3:[0-9]+]] | ; IS__CGSCC_OPM-NEXT: [[C:%.*]] = call i32 @test(i32* noalias nocapture nofree noundef nonnull readonly align 4 dereferenceable(4) [[A]], i64* noalias nocapture nofree noundef nonnull readonly align 8 dereferenceable(8) [[B]]) #[[ATTR3:[0-9]+]] | ||||
; IS__CGSCC_OPM-NEXT: ret i32 [[C]] | ; IS__CGSCC_OPM-NEXT: ret i32 [[C]] | ||||
; | ; | ||||
; IS__CGSCC_NPM: Function Attrs: nofree norecurse nosync nounwind readnone willreturn | ; IS__CGSCC_NPM: Function Attrs: nofree norecurse nosync nounwind readnone willreturn | ||||
; IS__CGSCC_NPM-LABEL: define {{[^@]+}}@caller | ; IS__CGSCC_NPM-LABEL: define {{[^@]+}}@caller | ||||
; IS__CGSCC_NPM-SAME: (i32 [[TMP0:%.*]]) #[[ATTR0]] { | ; IS__CGSCC_NPM-SAME: (i32 [[TMP0:%.*]]) #[[ATTR0]] { | ||||
; IS__CGSCC_NPM-NEXT: [[A_PRIV:%.*]] = alloca i32, align 4 | ; IS__CGSCC_NPM-NEXT: [[A_PRIV:%.*]] = alloca i32, align 4 | ||||
; IS__CGSCC_NPM-NEXT: [[TMP2:%.*]] = load i32, i32* [[A_PRIV]], align 4 | ; IS__CGSCC_NPM-NEXT: [[TMP2:%.*]] = load i32, i32* [[A_PRIV]], align 4 | ||||
; IS__CGSCC_NPM-NEXT: [[C:%.*]] = call i32 @test(i32 undef, i64 undef) #[[ATTR1:[0-9]+]], !range [[RNG0:![0-9]+]] | ; IS__CGSCC_NPM-NEXT: [[C:%.*]] = call i32 @test(i32 2, i64 undef) #[[ATTR1:[0-9]+]], !range [[RNG0:![0-9]+]] | ||||
; IS__CGSCC_NPM-NEXT: ret i32 [[C]] | ; IS__CGSCC_NPM-NEXT: ret i32 [[C]] | ||||
; | ; | ||||
%B = alloca i64 | %B = alloca i64 | ||||
store i64 1, i64* %B | store i64 1, i64* %B | ||||
%C = call i32 @test(i32* %A, i64* %B) | %C = call i32 @test(i32* %A, i64* %B) | ||||
ret i32 %C | ret i32 %C | ||||
} | } | ||||
define i32 @callercaller() { | define i32 @callercaller() { | ||||
; IS__TUNIT_OPM: Function Attrs: nofree nosync nounwind readnone | ; IS__TUNIT_OPM: Function Attrs: nofree nosync nounwind readnone willreturn | ||||
; IS__TUNIT_OPM-LABEL: define {{[^@]+}}@callercaller | ; IS__TUNIT_OPM-LABEL: define {{[^@]+}}@callercaller | ||||
; IS__TUNIT_OPM-SAME: () #[[ATTR2:[0-9]+]] { | ; IS__TUNIT_OPM-SAME: () #[[ATTR2:[0-9]+]] { | ||||
; IS__TUNIT_OPM-NEXT: [[B:%.*]] = alloca i32, align 4 | ; IS__TUNIT_OPM-NEXT: [[B:%.*]] = alloca i32, align 4 | ||||
; IS__TUNIT_OPM-NEXT: store i32 2, i32* [[B]], align 4 | ; IS__TUNIT_OPM-NEXT: store i32 2, i32* [[B]], align 4 | ||||
; IS__TUNIT_OPM-NEXT: [[X:%.*]] = call i32 @caller(i32* noalias nocapture nofree noundef nonnull readonly align 4 dereferenceable(4) [[B]]) #[[ATTR4:[0-9]+]] | ; IS__TUNIT_OPM-NEXT: [[X:%.*]] = call i32 @caller(i32* noalias nocapture nofree noundef nonnull readonly align 4 dereferenceable(4) [[B]]) #[[ATTR4:[0-9]+]] | ||||
; IS__TUNIT_OPM-NEXT: ret i32 [[X]] | ; IS__TUNIT_OPM-NEXT: ret i32 [[X]] | ||||
; | ; | ||||
; IS__TUNIT_NPM: Function Attrs: nofree nosync nounwind readnone | ; IS__TUNIT_NPM: Function Attrs: nofree nosync nounwind readnone willreturn | ||||
; IS__TUNIT_NPM-LABEL: define {{[^@]+}}@callercaller | ; IS__TUNIT_NPM-LABEL: define {{[^@]+}}@callercaller | ||||
; IS__TUNIT_NPM-SAME: () #[[ATTR2:[0-9]+]] { | ; IS__TUNIT_NPM-SAME: () #[[ATTR2:[0-9]+]] { | ||||
; IS__TUNIT_NPM-NEXT: [[B:%.*]] = alloca i32, align 4 | ; IS__TUNIT_NPM-NEXT: [[B:%.*]] = alloca i32, align 4 | ||||
; IS__TUNIT_NPM-NEXT: store i32 2, i32* [[B]], align 4 | ; IS__TUNIT_NPM-NEXT: store i32 2, i32* [[B]], align 4 | ||||
; IS__TUNIT_NPM-NEXT: [[TMP1:%.*]] = load i32, i32* [[B]], align 4 | ; IS__TUNIT_NPM-NEXT: [[TMP1:%.*]] = load i32, i32* [[B]], align 4 | ||||
; IS__TUNIT_NPM-NEXT: [[X:%.*]] = call i32 @caller(i32 [[TMP1]]) #[[ATTR4:[0-9]+]] | ; IS__TUNIT_NPM-NEXT: [[X:%.*]] = call i32 @caller(i32 [[TMP1]]) #[[ATTR4:[0-9]+]] | ||||
; IS__TUNIT_NPM-NEXT: ret i32 [[X]] | ; IS__TUNIT_NPM-NEXT: ret i32 [[X]] | ||||
; | ; | ||||
Show All 14 Lines | ; | ||||
%B = alloca i32 | %B = alloca i32 | ||||
store i32 2, i32* %B | store i32 2, i32* %B | ||||
%X = call i32 @caller(i32* %B) | %X = call i32 @caller(i32* %B) | ||||
ret i32 %X | ret i32 %X | ||||
} | } | ||||
;. | ;. | ||||
; IS__TUNIT____: attributes #[[ATTR0:[0-9]+]] = { argmemonly nofree nosync nounwind readonly willreturn } | ; IS__TUNIT____: attributes #[[ATTR0:[0-9]+]] = { argmemonly nofree nosync nounwind readonly willreturn } | ||||
; IS__TUNIT____: attributes #[[ATTR1:[0-9]+]] = { argmemonly nofree nosync nounwind willreturn } | ; IS__TUNIT____: attributes #[[ATTR1:[0-9]+]] = { argmemonly nofree nosync nounwind willreturn } | ||||
; IS__TUNIT____: attributes #[[ATTR2:[0-9]+]] = { nofree nosync nounwind readnone } | ; IS__TUNIT____: attributes #[[ATTR2:[0-9]+]] = { nofree nosync nounwind readnone willreturn } | ||||
; IS__TUNIT____: attributes #[[ATTR3:[0-9]+]] = { nofree nosync nounwind readonly willreturn } | ; IS__TUNIT____: attributes #[[ATTR3:[0-9]+]] = { nofree nosync nounwind readonly willreturn } | ||||
; IS__TUNIT____: attributes #[[ATTR4:[0-9]+]] = { nofree nosync nounwind willreturn } | ; IS__TUNIT____: attributes #[[ATTR4:[0-9]+]] = { nofree nosync nounwind willreturn } | ||||
;. | ;. | ||||
; IS__CGSCC_OPM: attributes #[[ATTR0]] = { argmemonly nofree norecurse nosync nounwind readonly willreturn } | ; IS__CGSCC_OPM: attributes #[[ATTR0]] = { argmemonly nofree norecurse nosync nounwind readonly willreturn } | ||||
; IS__CGSCC_OPM: attributes #[[ATTR1]] = { argmemonly nofree norecurse nosync nounwind willreturn } | ; IS__CGSCC_OPM: attributes #[[ATTR1]] = { argmemonly nofree norecurse nosync nounwind willreturn } | ||||
; IS__CGSCC_OPM: attributes #[[ATTR2]] = { nofree norecurse nosync nounwind readnone willreturn } | ; IS__CGSCC_OPM: attributes #[[ATTR2]] = { nofree norecurse nosync nounwind readnone willreturn } | ||||
; IS__CGSCC_OPM: attributes #[[ATTR3]] = { nosync nounwind readonly willreturn } | ; IS__CGSCC_OPM: attributes #[[ATTR3]] = { nosync nounwind readonly willreturn } | ||||
; IS__CGSCC_OPM: attributes #[[ATTR4]] = { nounwind willreturn } | ; IS__CGSCC_OPM: attributes #[[ATTR4]] = { nounwind willreturn } | ||||
;. | ;. | ||||
; IS__CGSCC_NPM: attributes #[[ATTR0]] = { nofree norecurse nosync nounwind readnone willreturn } | ; IS__CGSCC_NPM: attributes #[[ATTR0]] = { nofree norecurse nosync nounwind readnone willreturn } | ||||
; IS__CGSCC_NPM: attributes #[[ATTR1]] = { nosync nounwind readnone willreturn } | ; IS__CGSCC_NPM: attributes #[[ATTR1]] = { nosync nounwind readnone willreturn } | ||||
; IS__CGSCC_NPM: attributes #[[ATTR2]] = { nounwind readnone willreturn } | ; IS__CGSCC_NPM: attributes #[[ATTR2]] = { nounwind readnone willreturn } | ||||
;. | ;. | ||||
; IS__CGSCC_NPM: [[RNG0]] = !{i32 0, i32 4} | ; IS__CGSCC_NPM: [[RNG0]] = !{i32 0, i32 4} | ||||
;. | ;. |