Skip to content

Commit 1196783

Browse files
authored
Handle putchar (rust-lang#241)
1 parent a8e09db commit 1196783

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

enzyme/Enzyme/ActivityAnalysis.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ std::set<std::string> KnownInactiveFunctions = {
8787
"__cxa_guard_release",
8888
"__cxa_guard_abort",
8989
"printf",
90+
"putchar",
9091
"vprintf",
9192
"puts",
9293
"fflush",
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
; RUN: %opt < %s %loadEnzyme -enzyme -enzyme-preopt=false -O3 -S | FileCheck %s
2+
3+
declare i32 @putchar(i32)
4+
5+
; Function Attrs: nounwind readnone uwtable
6+
define double @tester(double %x) {
7+
entry:
8+
%tmp = call i32 @putchar(i32 32)
9+
%0 = tail call fast double @llvm.exp.f64(double %x)
10+
ret double %0
11+
}
12+
13+
define double @test_derivative(double %x) {
14+
entry:
15+
%0 = tail call double (double (double)*, ...) @__enzyme_autodiff(double (double)* nonnull @tester, double %x)
16+
ret double %0
17+
}
18+
19+
; Function Attrs: nounwind readnone speculatable
20+
declare double @llvm.exp.f64(double)
21+
22+
; Function Attrs: nounwind
23+
declare double @__enzyme_autodiff(double (double)*, ...)
24+
25+
; CHECK: define double @test_derivative(double %x)
26+
; CHECK-NEXT: entry:
27+
; CHECK-NEXT: %tmp.i = tail call i32 @putchar(i32 32)
28+
; CHECK-NEXT: %0 = tail call fast double @llvm.exp.f64(double %x)
29+
; CHECK-NEXT: ret double %0
30+
; CHECK-NEXT: }

0 commit comments

Comments
 (0)