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/attrs.ll
Show First 20 Lines • Show All 87 Lines • ▼ Show 20 Lines | entry: | ||||
ret i32 %a | ret i32 %a | ||||
} | } | ||||
; Also make sure we don't drop the call zeroext attribute. | ; Also make sure we don't drop the call zeroext attribute. | ||||
define i32 @test(i32* %X) { | define i32 @test(i32* %X) { | ||||
; | ; | ||||
; IS__TUNIT_OPM: Function Attrs: nofree nosync nounwind readnone willreturn | ; IS__TUNIT_OPM: Function Attrs: nofree nosync nounwind readnone willreturn | ||||
; IS__TUNIT_OPM-LABEL: define {{[^@]+}}@test | ; IS__TUNIT_OPM-LABEL: define {{[^@]+}}@test | ||||
; IS__TUNIT_OPM-SAME: (i32* nocapture nofree readonly align 4 [[X:%.*]]) #[[ATTR0]] { | ; IS__TUNIT_OPM-SAME: (i32* nocapture nofree readonly [[X:%.*]]) #[[ATTR0]] { | ||||
; IS__TUNIT_OPM-NEXT: entry: | ; IS__TUNIT_OPM-NEXT: entry: | ||||
; IS__TUNIT_OPM-NEXT: [[S:%.*]] = alloca [[STRUCT_SS:%.*]], align 8 | ; IS__TUNIT_OPM-NEXT: [[S:%.*]] = alloca [[STRUCT_SS:%.*]], align 8 | ||||
; IS__TUNIT_OPM-NEXT: [[TMP1:%.*]] = getelementptr [[STRUCT_SS]], %struct.ss* [[S]], i32 0, i32 0 | ; IS__TUNIT_OPM-NEXT: [[TMP1:%.*]] = getelementptr [[STRUCT_SS]], %struct.ss* [[S]], i32 0, i32 0 | ||||
; IS__TUNIT_OPM-NEXT: store i32 1, i32* [[TMP1]], align 8 | ; IS__TUNIT_OPM-NEXT: store i32 1, i32* [[TMP1]], align 8 | ||||
; IS__TUNIT_OPM-NEXT: [[TMP4:%.*]] = getelementptr [[STRUCT_SS]], %struct.ss* [[S]], i32 0, i32 1 | ; IS__TUNIT_OPM-NEXT: [[TMP4:%.*]] = getelementptr [[STRUCT_SS]], %struct.ss* [[S]], i32 0, i32 1 | ||||
; IS__TUNIT_OPM-NEXT: [[C:%.*]] = call i32 @f(%struct.ss* noalias nocapture nofree noundef nonnull readonly byval([[STRUCT_SS]]) align 8 dereferenceable(12) [[S]], i32* nocapture nofree readonly byval(i32) align 4 [[X]]) #[[ATTR0]] | ; IS__TUNIT_OPM-NEXT: [[C:%.*]] = call i32 @f(%struct.ss* noalias nocapture nofree noundef nonnull readonly byval([[STRUCT_SS]]) align 8 dereferenceable(12) [[S]], i32* nocapture nofree readonly byval(i32) align 4 [[X]]) #[[ATTR0]] | ||||
; IS__TUNIT_OPM-NEXT: ret i32 [[C]] | ; IS__TUNIT_OPM-NEXT: ret i32 [[C]] | ||||
; | ; | ||||
; IS__TUNIT_NPM: Function Attrs: nofree nosync nounwind readnone willreturn | ; IS__TUNIT_NPM: Function Attrs: nofree nosync nounwind readnone willreturn | ||||
; IS__TUNIT_NPM-LABEL: define {{[^@]+}}@test | ; IS__TUNIT_NPM-LABEL: define {{[^@]+}}@test | ||||
; IS__TUNIT_NPM-SAME: (i32* nocapture nofree readonly align 4 [[X:%.*]]) #[[ATTR0]] { | ; IS__TUNIT_NPM-SAME: (i32* nocapture nofree readonly [[X:%.*]]) #[[ATTR0]] { | ||||
; IS__TUNIT_NPM-NEXT: entry: | ; IS__TUNIT_NPM-NEXT: entry: | ||||
; IS__TUNIT_NPM-NEXT: [[S:%.*]] = alloca [[STRUCT_SS:%.*]], align 8 | ; IS__TUNIT_NPM-NEXT: [[S:%.*]] = alloca [[STRUCT_SS:%.*]], align 8 | ||||
; IS__TUNIT_NPM-NEXT: [[TMP1:%.*]] = getelementptr [[STRUCT_SS]], %struct.ss* [[S]], i32 0, i32 0 | ; IS__TUNIT_NPM-NEXT: [[TMP1:%.*]] = getelementptr [[STRUCT_SS]], %struct.ss* [[S]], i32 0, i32 0 | ||||
; IS__TUNIT_NPM-NEXT: store i32 1, i32* [[TMP1]], align 8 | ; IS__TUNIT_NPM-NEXT: store i32 1, i32* [[TMP1]], align 8 | ||||
; IS__TUNIT_NPM-NEXT: [[TMP4:%.*]] = getelementptr [[STRUCT_SS]], %struct.ss* [[S]], i32 0, i32 1 | ; IS__TUNIT_NPM-NEXT: [[TMP4:%.*]] = getelementptr [[STRUCT_SS]], %struct.ss* [[S]], i32 0, i32 1 | ||||
; IS__TUNIT_NPM-NEXT: [[S_CAST:%.*]] = bitcast %struct.ss* [[S]] to i32* | ; IS__TUNIT_NPM-NEXT: [[S_CAST:%.*]] = bitcast %struct.ss* [[S]] to i32* | ||||
; IS__TUNIT_NPM-NEXT: [[TMP0:%.*]] = load i32, i32* [[S_CAST]], align 8 | ; IS__TUNIT_NPM-NEXT: [[TMP0:%.*]] = load i32, i32* [[S_CAST]], align 8 | ||||
; IS__TUNIT_NPM-NEXT: [[S_0_1:%.*]] = getelementptr [[STRUCT_SS]], %struct.ss* [[S]], i32 0, i32 1 | ; IS__TUNIT_NPM-NEXT: [[S_0_1:%.*]] = getelementptr [[STRUCT_SS]], %struct.ss* [[S]], i32 0, i32 1 | ||||
▲ Show 20 Lines • Show All 48 Lines • Show Last 20 Lines |