Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/Transforms/FunctionAttrs/nosync.ll
Show All 22 Lines | |||||
23 | ; TEST 1 | 23 | ; TEST 1 | ||
24 | ; non-convergent and readnone implies nosync | 24 | ; non-convergent and readnone implies nosync | ||
25 | %struct.RT = type { i8, [10 x [20 x i32]], i8 } | 25 | %struct.RT = type { i8, [10 x [20 x i32]], i8 } | ||
26 | %struct.ST = type { i32, double, %struct.RT } | 26 | %struct.ST = type { i32, double, %struct.RT } | ||
27 | 27 | | |||
28 | ; FNATTR: Function Attrs: norecurse nounwind optsize readnone ssp uwtable | 28 | ; FNATTR: Function Attrs: norecurse nounwind optsize readnone ssp uwtable | ||
29 | ; FNATTR-NEXT: define nonnull i32* @foo(%struct.ST* readnone %s) | 29 | ; FNATTR-NEXT: define nonnull i32* @foo(%struct.ST* readnone %s) | ||
30 | ; ATTRIBUTOR: Function Attrs: nofree nosync nounwind optsize readnone ssp uwtable | 30 | ; ATTRIBUTOR: Function Attrs: nofree nosync nounwind optsize readnone ssp uwtable | ||
31 | ; ATTRIBUTOR-NEXT: define i32* @foo(%struct.ST* %s) | 31 | ; ATTRIBUTOR-NEXT: define nonnull i32* @foo(%struct.ST* %s) | ||
32 | define i32* @foo(%struct.ST* %s) nounwind uwtable readnone optsize ssp { | 32 | define i32* @foo(%struct.ST* %s) nounwind uwtable readnone optsize ssp { | ||
33 | entry: | 33 | entry: | ||
34 | %arrayidx = getelementptr inbounds %struct.ST, %struct.ST* %s, i64 1, i32 2, i32 1, i64 5, i64 13 | 34 | %arrayidx = getelementptr inbounds %struct.ST, %struct.ST* %s, i64 1, i32 2, i32 1, i64 5, i64 13 | ||
35 | ret i32* %arrayidx | 35 | ret i32* %arrayidx | ||
36 | } | 36 | } | ||
37 | 37 | | |||
38 | ; TEST 2 | 38 | ; TEST 2 | ||
39 | ; atomic load with monotonic ordering | 39 | ; atomic load with monotonic ordering | ||
▲ Show 20 Lines • Show All 313 Lines • Show Last 20 Lines |