Merge pull request #10833 from gottesmm/enum_valueownershipkind_erased_return_value
diff --git a/lib/SIL/SILOwnershipVerifier.cpp b/lib/SIL/SILOwnershipVerifier.cpp
index d39b492..81522bf 100644
--- a/lib/SIL/SILOwnershipVerifier.cpp
+++ b/lib/SIL/SILOwnershipVerifier.cpp
@@ -862,6 +862,10 @@
Base = MergedValue.getValue();
}
+ if (auto *E = getType().getEnumOrBoundGenericEnum()) {
+ return visitNonTrivialEnum(E, Base);
+ }
+
return {compatibleWithOwnership(Base), true};
}
diff --git a/test/SIL/ownership-verifier/use_verifier.sil b/test/SIL/ownership-verifier/use_verifier.sil
index bbd7178..7eee9bc 100644
--- a/test/SIL/ownership-verifier/use_verifier.sil
+++ b/test/SIL/ownership-verifier/use_verifier.sil
@@ -351,6 +351,12 @@
return %9999 : $()
}
+sil @trivial_enum_return_value : $@convention(thin) () -> @owned Optional<Builtin.NativeObject> {
+bb0:
+ %0 = enum $Optional<Builtin.NativeObject>, #Optional.none!enumelt
+ return %0 : $Optional<Builtin.NativeObject>
+}
+
//////////////////////
// Terminator Tests //
//////////////////////