Skip to content

Commit 0a81fa1

Browse files
authored
Clear attribute of generated (#2166)
* Clear attribute of generated * fix * Update inactbuffree.ll
1 parent 624621a commit 0a81fa1

File tree

5 files changed

+24
-9
lines changed

5 files changed

+24
-9
lines changed

enzyme/Enzyme/EnzymeLogic.cpp

+16-2
Original file line numberDiff line numberDiff line change
@@ -1696,8 +1696,22 @@ void clearFunctionAttributes(Function *f) {
16961696
if (Arg.hasAttribute(Attribute::StructRet))
16971697
Arg.removeAttr(Attribute::StructRet);
16981698
}
1699-
if (f->hasFnAttribute(Attribute::OptimizeNone))
1700-
f->removeFnAttr(Attribute::OptimizeNone);
1699+
1700+
Attribute::AttrKind fnattrs[] = {
1701+
#if LLVM_VERSION_MAJOR >= 16
1702+
Attribute::Memory,
1703+
#endif
1704+
Attribute::ReadOnly,
1705+
Attribute::ReadNone,
1706+
Attribute::WriteOnly,
1707+
Attribute::WillReturn,
1708+
Attribute::OptimizeNone
1709+
};
1710+
for (auto attr : fnattrs) {
1711+
if (f->hasFnAttribute(attr)) {
1712+
f->removeFnAttr(attr);
1713+
}
1714+
}
17011715

17021716
if (f->getAttributes().getRetDereferenceableBytes()) {
17031717
f->removeRetAttr(Attribute::Dereferenceable);

enzyme/test/Enzyme/ForwardMode/intelSubscriptIntrinsic.ll

+4-4
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,17 @@ declare void @__enzyme_fwddiff(float (...)* noalias, %"QNCA_a0$float*$rank1$"* n
3838
!8 = !{!"ifx$unique_sym$10", !9, i64 0}
3939
!9 = !{!"Fortran Data Symbol", !4, i64 0}
4040

41-
; CHECK: define internal float @fwddiffeselectfirst(%"QNCA_a0$float*$rank1$"* noalias nocapture readonly dereferenceable(72) "ptrnoalias" %X, %"QNCA_a0$float*$rank1$"* nocapture %"X'") local_unnamed_addr #0 {
41+
; CHECK: define internal float @fwddiffeselectfirst(%"QNCA_a0$float*$rank1$"* noalias nocapture readonly dereferenceable(72) "ptrnoalias" %X, %"QNCA_a0$float*$rank1$"* nocapture %"X'")
4242
; CHECK-NEXT: entry:
4343
; CHECK-NEXT: %"X.addr_a0$'ipg" = getelementptr inbounds %"QNCA_a0$float*$rank1$", %"QNCA_a0$float*$rank1$"* %"X'", i64 0, i32 0
4444
; CHECK-NEXT: %"X.addr_a0$" = getelementptr inbounds %"QNCA_a0$float*$rank1$", %"QNCA_a0$float*$rank1$"* %X, i64 0, i32 0
4545
; CHECK-NEXT: %"X.addr_a0$_fetch.29'ipl" = load float*, float** %"X.addr_a0$'ipg", align 1, !tbaa !0, !alias.scope !10, !noalias !13
4646
; CHECK-NEXT: %"X.addr_a0$_fetch.29" = load float*, float** %"X.addr_a0$", align 1, !tbaa !0, !alias.scope !13, !noalias !10
4747
; CHECK-NEXT: %"X.dim_info$.lower_bound$" = getelementptr inbounds %"QNCA_a0$float*$rank1$", %"QNCA_a0$float*$rank1$"* %X, i64 0, i32 6, i64 0, i32 2
48-
; CHECK-NEXT: %"X.dim_info$.lower_bound$[]" = tail call i64* @llvm.intel.subscript.p0i64.i64.i32.p0i64.i32(i8 0, i64 0, i32 24, i64* nonnull elementtype(i64) %"X.dim_info$.lower_bound$", i32 0) #0
48+
; CHECK-NEXT: %"X.dim_info$.lower_bound$[]" = tail call i64* @llvm.intel.subscript.p0i64.i64.i32.p0i64.i32(i8 0, i64 0, i32 24, i64* nonnull elementtype(i64) %"X.dim_info$.lower_bound$", i32 0)
4949
; CHECK-NEXT: %"X.dim_info$.lower_bound$[]_fetch.30" = load i64, i64* %"X.dim_info$.lower_bound$[]", align 1, !tbaa !6, !alias.scope !13, !noalias !10
5050
; CHECK-NEXT: %0 = call float* @llvm.intel.subscript.p0f32.i64.i64.p0f32.i64(i8 0, i64 %"X.dim_info$.lower_bound$[]_fetch.30", i64 4, float* elementtype(float) %"X.addr_a0$_fetch.29'ipl", i64 1)
51-
; CHECK-NEXT: %"X.addr_a0$_fetch.29[]" = tail call float* @llvm.intel.subscript.p0f32.i64.i64.p0f32.i64(i8 0, i64 %"X.dim_info$.lower_bound$[]_fetch.30", i64 4, float* elementtype(float) %"X.addr_a0$_fetch.29", i64 1) #0
51+
; CHECK-NEXT: %"X.addr_a0$_fetch.29[]" = tail call float* @llvm.intel.subscript.p0f32.i64.i64.p0f32.i64(i8 0, i64 %"X.dim_info$.lower_bound$[]_fetch.30", i64 4, float* elementtype(float) %"X.addr_a0$_fetch.29", i64 1)
5252
; CHECK-NEXT: %"X.addr_a0$_fetch.29[]_fetch.32'ipl" = load float, float* %0, align 1, !tbaa !7, !alias.scope !15, !noalias !18
5353
; CHECK-NEXT: ret float %"X.addr_a0$_fetch.29[]_fetch.32'ipl"
54-
; CHECK-NEXT: }
54+
; CHECK-NEXT: }

enzyme/test/Enzyme/ReverseMode/hascast.ll

+1
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ attributes #3 = { nounwind }
132132
; CHECK-NEXT: entry:
133133
; CHECK-NEXT: %[[loadcallp:.+]] = load double, double* %[[callp]]
134134
; CHECK-NEXT: store double 0.000000e+00, double* %[[callp]]
135+
; CHECK-NEXT: call void @diffecast(double* %x, double* %"x'")
135136
; CHECK-NEXT: %[[m0diffez:.+]] = fmul fast double %[[loadcallp]], %y
136137
; CHECK-NEXT: %[[m1diffey:.+]] = fmul fast double %[[loadcallp]], %z
137138
; CHECK-NEXT: %[[toret0:.+]] = insertvalue { double, double } undef, double %[[m1diffey]], 0

enzyme/test/Enzyme/ReverseMode/inactbuffree.ll

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ declare double @__enzyme_autodiff(i8*, double, i64)
4242

4343
; CHECK: define internal { double } @diffesquare(double %x, i64 %i, double %differeturn)
4444
; CHECK-NEXT: entry:
45-
; CHECK-NEXT: %call = tail call double* @alloc() #3
45+
; CHECK-NEXT: %call = tail call double* @alloc()
4646
; CHECK-NEXT: store double 3.000000e+00, double* %call
4747
; CHECK-NEXT: %arrayidx2 = getelementptr inbounds double, double* %call, i64 %i
4848
; CHECK-NEXT: %ld = load double, double* %arrayidx2

enzyme/test/Enzyme/ReverseMode/tgamma.ll

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ declare double @tgamma(double)
3434

3535
; CHECK: define internal fastcc { double } @diffea5(double %arg, double %differeturn)
3636
; CHECK-NEXT: bb:
37-
; CHECK-NEXT: %i8 = call double @tgamma(double %arg) #1
37+
; CHECK-NEXT: %i8 = call double @tgamma(double %arg)
3838
; CHECK-NEXT: %0 = fmul fast double %differeturn, %arg
3939
; CHECK-NEXT: %1 = fmul fast double %i8, %differeturn
40-
; CHECK-NEXT: %2 = call fast double @digamma(double %arg) #0
40+
; CHECK-NEXT: %2 = call fast double @digamma(double %arg)
4141
; CHECK-NEXT: %3 = fmul fast double %2, %0
4242
; CHECK-NEXT: %4 = fadd fast double %1, %3
4343
; CHECK-NEXT: %5 = insertvalue { double } undef, double %4, 0

0 commit comments

Comments
 (0)