Skip to content

Commit 1fa0a99

Browse files
authored
Add no type error (rust-lang#672)
1 parent e95c410 commit 1fa0a99

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

enzyme/Enzyme/AdjointGenerator.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2814,6 +2814,13 @@ class AdjointGenerator
28142814
vd = TypeTree(BaseType::Pointer).Only(0);
28152815
goto known;
28162816
}
2817+
if (CustomErrorHandler) {
2818+
std::string str;
2819+
raw_string_ostream ss(str);
2820+
ss << "Cannot deduce type of copy " << MTI;
2821+
CustomErrorHandler(str.c_str(), wrap(&MTI), ErrorType::NoType,
2822+
&TR.analyzer);
2823+
}
28172824
EmitFailure("CannotDeduceType", MTI.getDebugLoc(), &MTI,
28182825
"failed to deduce type of copy ", MTI);
28192826

enzyme/Enzyme/Utils.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ class ScalarEvolution;
6969
enum class ErrorType {
7070
NoDerivative = 0,
7171
NoShadow = 1,
72-
IllegalTypeAnalysis = 2
72+
IllegalTypeAnalysis = 2,
73+
NoType = 3
7374
};
7475

7576
extern "C" {

enzyme/test/Enzyme/ForwardMode/fmuladd.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ declare double @__enzyme_fwddiff(double (double, double, double)*, ...)
2020

2121
; CHECK: define internal double @fwddiffetester(double %x, double %"x'", double %y, double %"y'", double %z, double %"z'")
2222
; CHECK-NEXT: entry:
23-
; CHECK-NEXT: %0 = fmul fast double %y, %"x'"
24-
; CHECK-NEXT: %1 = fmul fast double %x, %"y'"
25-
; CHECK-NEXT: %2 = fadd fast double %1, %0
23+
; CHECK-DAG: %[[i0:.+]] = fmul fast double %y, %"x'"
24+
; CHECK-DAG: %[[i1:.+]] = fmul fast double %x, %"y'"
25+
; CHECK-NEXT: %2 = fadd fast double %[[i1]], %[[i0]]
2626
; CHECK-NEXT: %3 = fadd fast double %2, %"x'"
2727
; CHECK-NEXT: ret double %3
2828
; CHECK-NEXT: }

0 commit comments

Comments
 (0)