Skip to content

Commit 0acf3ac

Browse files
committed
SIL: Remove is_nonnull instruction
1 parent d123092 commit 0acf3ac

File tree

26 files changed

+5
-210
lines changed

26 files changed

+5
-210
lines changed

docs/SIL.rst

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4557,24 +4557,6 @@ objc_existential_metatype_to_object
45574557

45584558
TODO
45594559

4560-
is_nonnull
4561-
``````````
4562-
::
4563-
4564-
sil-instruction ::= 'is_nonnull' sil-operand
4565-
4566-
%1 = is_nonnull %0 : $C
4567-
// %0 must be of reference or function type $C
4568-
// %1 will be of type Builtin.Int1
4569-
4570-
Checks whether a reference type value is null, returning 1 if
4571-
the value is not null, or 0 if it is null. If the value is a function
4572-
type, it checks the function pointer (not the data pointer) for null.
4573-
4574-
This is not a sensical thing for SIL to represent given that reference
4575-
types are non-nullable, but makes sense at the machine level. This is
4576-
a horrible hack that should go away someday.
4577-
45784560
Checked Conversions
45794561
~~~~~~~~~~~~~~~~~~~
45804562

include/swift/SIL/PatternMatch.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,6 @@ UNARY_OP_MATCH_WITH_ARG_MATCHER(ThickToObjCMetatypeInst)
348348
UNARY_OP_MATCH_WITH_ARG_MATCHER(ObjCToThickMetatypeInst)
349349
UNARY_OP_MATCH_WITH_ARG_MATCHER(ObjCMetatypeToObjectInst)
350350
UNARY_OP_MATCH_WITH_ARG_MATCHER(ObjCExistentialMetatypeToObjectInst)
351-
UNARY_OP_MATCH_WITH_ARG_MATCHER(IsNonnullInst)
352351
UNARY_OP_MATCH_WITH_ARG_MATCHER(RetainValueInst)
353352
UNARY_OP_MATCH_WITH_ARG_MATCHER(RetainValueAddrInst)
354353
UNARY_OP_MATCH_WITH_ARG_MATCHER(ReleaseValueInst)

include/swift/SIL/SILBuilder.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -889,12 +889,6 @@ class SILBuilder {
889889
RefToUnmanagedInst(getSILDebugLocation(Loc), op, ty));
890890
}
891891

892-
IsNonnullInst *createIsNonnull(SILLocation Loc, SILValue operand) {
893-
return insert(new (getModule()) IsNonnullInst(
894-
getSILDebugLocation(Loc), operand,
895-
SILType::getBuiltinIntegerType(1, getASTContext())));
896-
}
897-
898892
UnconditionalCheckedCastInst *
899893
createUnconditionalCheckedCast(SILLocation Loc, SILValue op, SILType destTy) {
900894
return insert(UnconditionalCheckedCastInst::create(

include/swift/SIL/SILCloner.h

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1184,15 +1184,6 @@ visitObjCToThickMetatypeInst(ObjCToThickMetatypeInst *Inst) {
11841184
getOpType(Inst->getType())));
11851185
}
11861186

1187-
template<typename ImplClass>
1188-
void
1189-
SILCloner<ImplClass>::visitIsNonnullInst(IsNonnullInst *Inst) {
1190-
getBuilder().setCurrentDebugScope(getOpScope(Inst->getDebugScope()));
1191-
doPostProcess(Inst,
1192-
getBuilder().createIsNonnull(getOpLocation(Inst->getLoc()),
1193-
getOpValue(Inst->getOperand())));
1194-
}
1195-
11961187
template<typename ImplClass>
11971188
void
11981189
SILCloner<ImplClass>::visitUnconditionalCheckedCastInst(

include/swift/SIL/SILInstruction.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3831,16 +3831,6 @@ class ObjCProtocolInst
38313831
MutableArrayRef<Operand> getAllOperands() { return {}; }
38323832
};
38333833

3834-
/// Test that an address or reference type is not null.
3835-
class IsNonnullInst
3836-
: public UnaryInstructionBase<SILInstructionKind::IsNonnullInst,
3837-
SingleValueInstruction> {
3838-
friend SILBuilder;
3839-
3840-
IsNonnullInst(SILDebugLocation DebugLoc, SILValue Operand, SILType BoolTy)
3841-
: UnaryInstructionBase(DebugLoc, Operand, BoolTy) {}
3842-
};
3843-
38443834

38453835
/// Perform an unconditional checked cast that aborts if the cast fails.
38463836
class UnconditionalCheckedCastInst final

include/swift/SIL/SILNodes.def

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -462,12 +462,9 @@ ABSTRACT_VALUE_AND_INST(SingleValueInstruction, ValueBase, SILInstruction)
462462
SINGLE_VALUE_INST(KeyPathInst, keypath,
463463
SingleValueInstruction, MayHaveSideEffects, DoesNotRelease)
464464

465-
SINGLE_VALUE_INST(IsNonnullInst, is_nonnull,
466-
SingleValueInstruction, None, DoesNotRelease)
467-
468-
SINGLE_VALUE_INST_RANGE(SingleValueInstruction, AllocStackInst, IsNonnullInst)
465+
SINGLE_VALUE_INST_RANGE(SingleValueInstruction, AllocStackInst, KeyPathInst)
469466

470-
NODE_RANGE(ValueBase, SILPHIArgument, IsNonnullInst)
467+
NODE_RANGE(ValueBase, SILPHIArgument, KeyPathInst)
471468

472469
// Terminators
473470
ABSTRACT_INST(TermInst, SILInstruction)

include/swift/Serialization/ModuleFormat.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ const uint16_t VERSION_MAJOR = 0;
5454
/// in source control, you should also update the comment to briefly
5555
/// describe what change you made. The content of this comment isn't important;
5656
/// it just ensures a conflict if two people change the module format.
57-
const uint16_t VERSION_MINOR = 369; // Last change: associated type overrides
57+
const uint16_t VERSION_MINOR = 370; // Last change: remove is_nonnull
5858

5959
using DeclID = PointerEmbeddedInt<unsigned, 31>;
6060
using DeclIDField = BCFixed<31>;

lib/IRGen/IRGenSIL.cpp

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,8 +1009,6 @@ class IRGenSILFunction :
10091009
void visitBridgeObjectToRefInst(BridgeObjectToRefInst *i);
10101010
void visitBridgeObjectToWordInst(BridgeObjectToWordInst *i);
10111011

1012-
void visitIsNonnullInst(IsNonnullInst *i);
1013-
10141012
void visitIndexAddrInst(IndexAddrInst *i);
10151013
void visitTailAddrInst(TailAddrInst *i);
10161014
void visitIndexRawPointerInst(IndexRawPointerInst *i);
@@ -4695,35 +4693,6 @@ void IRGenSILFunction::visitKeyPathInst(swift::KeyPathInst *I) {
46954693
setLoweredExplosion(I, e);
46964694
}
46974695

4698-
void IRGenSILFunction::visitIsNonnullInst(swift::IsNonnullInst *i) {
4699-
// Get the value we're testing, which may be a function, an address or an
4700-
// instance pointer.
4701-
llvm::Value *val;
4702-
4703-
SILValue operand = i->getOperand();
4704-
auto type = operand->getType();
4705-
if (type.isAddress()) {
4706-
val = getLoweredAddress(operand).getAddress();
4707-
} else if (auto fnType = type.getAs<SILFunctionType>()) {
4708-
Explosion values = getLoweredExplosion(operand);
4709-
val = values.claimNext(); // Function pointer.
4710-
if (fnType->getRepresentation() == SILFunctionTypeRepresentation::Thick)
4711-
(void) values.claimNext(); // Ignore the data pointer.
4712-
} else {
4713-
Explosion values = getLoweredExplosion(operand);
4714-
val = values.claimNext();
4715-
}
4716-
4717-
// Check that the result isn't null.
4718-
auto *valTy = cast<llvm::PointerType>(val->getType());
4719-
llvm::Value *result = Builder.CreateICmp(llvm::CmpInst::ICMP_NE,
4720-
val, llvm::ConstantPointerNull::get(valTy));
4721-
4722-
Explosion out;
4723-
out.add(result);
4724-
setLoweredExplosion(i, out);
4725-
}
4726-
47274696
void IRGenSILFunction::visitUpcastInst(swift::UpcastInst *i) {
47284697
auto toTy = getTypeInfo(i->getType()).getSchema()[0].getScalarType();
47294698

lib/ParseSIL/ParseSIL.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4005,14 +4005,6 @@ bool SILParser::parseSILInstruction(SILBuilder &B) {
40054005
ResultVal = B.createRefTailAddr(InstLoc, Val, ResultTy);
40064006
break;
40074007
}
4008-
case SILInstructionKind::IsNonnullInst: {
4009-
SourceLoc Loc;
4010-
if (parseTypedValueRef(Val, Loc, B) ||
4011-
parseSILDebugLocation(InstLoc, B))
4012-
return true;
4013-
ResultVal = B.createIsNonnull(InstLoc, Val);
4014-
break;
4015-
}
40164008
case SILInstructionKind::IndexAddrInst: {
40174009
SILValue IndexVal;
40184010
if (parseTypedValueRef(Val, B) ||

lib/SIL/SILInstruction.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -721,10 +721,6 @@ namespace {
721721
return true;
722722
}
723723

724-
bool visitIsNonnullInst(IsNonnullInst *RHS) {
725-
return true;
726-
}
727-
728724
bool visitBridgeObjectToRefInst(BridgeObjectToRefInst *X) {
729725
return true;
730726
}

lib/SIL/SILOwnershipVerifier.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,6 @@ ACCEPTS_ANY_OWNERSHIP_INST(UncheckedTrivialBitCast)
576576
ACCEPTS_ANY_OWNERSHIP_INST(ExistentialMetatype)
577577
ACCEPTS_ANY_OWNERSHIP_INST(ValueMetatype)
578578
ACCEPTS_ANY_OWNERSHIP_INST(UncheckedOwnershipConversion)
579-
ACCEPTS_ANY_OWNERSHIP_INST(IsNonnull)
580579
#undef ACCEPTS_ANY_OWNERSHIP_INST
581580

582581
// Trivial if trivial typed, otherwise must accept owned?

lib/SIL/SILPrinter.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1467,10 +1467,6 @@ class SILPrinter : public SILInstructionVisitor<SILPrinter> {
14671467
printUncheckedConversionInst(I, I->getOperand());
14681468
}
14691469

1470-
void visitIsNonnullInst(IsNonnullInst *I) {
1471-
*this << getIDAndType(I->getOperand());
1472-
}
1473-
14741470
void visitCopyValueInst(CopyValueInst *I) {
14751471
*this << getIDAndType(I->getOperand());
14761472
}

lib/SIL/SILVerifier.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3107,13 +3107,6 @@ class SILVerifier : public SILVerifierBase<SILVerifier> {
31073107
}
31083108
}
31093109

3110-
void checkIsNonnullInst(IsNonnullInst *II) {
3111-
// The operand must be a function type or a class type.
3112-
auto OpTy = II->getOperand()->getType().getSwiftRValueType();
3113-
require(OpTy->mayHaveSuperclass() || OpTy->is<SILFunctionType>(),
3114-
"is_nonnull operand must be a class or function type");
3115-
}
3116-
31173110
void checkAddressToPointerInst(AddressToPointerInst *AI) {
31183111
require(AI->getOperand()->getType().isAddress(),
31193112
"address-to-pointer operand must be an address");

lib/SIL/ValueOwnershipKindClassifier.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ CONSTANT_OWNERSHIP_INST(Trivial, InitEnumDataAddr)
7373
CONSTANT_OWNERSHIP_INST(Trivial, InitExistentialAddr)
7474
CONSTANT_OWNERSHIP_INST(Trivial, InitExistentialMetatype)
7575
CONSTANT_OWNERSHIP_INST(Trivial, IntegerLiteral)
76-
CONSTANT_OWNERSHIP_INST(Trivial, IsNonnull)
7776
CONSTANT_OWNERSHIP_INST(Trivial, IsUnique)
7877
CONSTANT_OWNERSHIP_INST(Trivial, IsUniqueOrPinned)
7978
CONSTANT_OWNERSHIP_INST(Trivial, MarkUninitializedBehavior)

lib/SILGen/SILGenExpr.cpp

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -4138,49 +4138,6 @@ RValue RValueEmitter::visitRebindSelfInConstructorExpr(
41384138
SGF.SelfInitDelegationState = SILGenFunction::NormalSelf;
41394139
SGF.InitDelegationSelf = ManagedValue();
41404140

4141-
// If we are using Objective-C allocation, the caller can return
4142-
// nil. When this happens with an explicitly-written super.init or
4143-
// self.init invocation, return early if we did get nil.
4144-
//
4145-
// TODO: Remove this when failable initializers are fully implemented.
4146-
auto classDecl = selfTy->getClassOrBoundGenericClass();
4147-
4148-
// Dig out the constructor reference to check if it is an explicit
4149-
// 'self.init' or 'super.init' call.
4150-
bool isChainToSuper = false;
4151-
auto *calledCtor = E->getCalledConstructor(isChainToSuper);
4152-
4153-
if (classDecl &&
4154-
!calledCtor->isImplicit() &&
4155-
usesObjCAllocator(classDecl)) {
4156-
4157-
// Check whether the new self is null. *NOTE* At this point, we can not
4158-
// access the actual new value using newSelf anymore. We need to grab self
4159-
// via the normal manner of doing so.
4160-
SILValue isNonnullSelf;
4161-
{
4162-
Scope S(SGF, E);
4163-
RValue selfRValue =
4164-
SGF.emitRValueForDecl(E, selfDecl, selfTy->getCanonicalType(),
4165-
AccessSemantics::DirectToStorage,
4166-
SGFContext::AllowGuaranteedPlusZero);
4167-
ManagedValue reloadedSelf =
4168-
std::move(selfRValue).getAsSingleValue(SGF, E);
4169-
isNonnullSelf = SGF.B.createIsNonnull(E, reloadedSelf.getValue());
4170-
}
4171-
Condition cond = SGF.emitCondition(isNonnullSelf, E,
4172-
/*hasFalseCode=*/false,
4173-
/*invertValue=*/true,
4174-
{ });
4175-
4176-
// If self is null, branch to the epilog.
4177-
cond.enterTrue(SGF);
4178-
SGF.Cleanups.emitBranchAndCleanups(SGF.ReturnDest, E, { });
4179-
cond.exitTrue(SGF);
4180-
4181-
cond.complete(SGF);
4182-
}
4183-
41844141
return SGF.emitEmptyTupleRValue(E, C);
41854142
}
41864143

lib/SILOptimizer/Transforms/CSE.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -349,10 +349,6 @@ class HashVisitor : public SILInstructionVisitor<HashVisitor, llvm::hash_code> {
349349
return hash;
350350
}
351351

352-
hash_code visitIsNonnullInst(IsNonnullInst *X) {
353-
return llvm::hash_combine(X->getKind(), X->getOperand(), X->getType());
354-
}
355-
356352
hash_code visitThinFunctionToPointerInst(ThinFunctionToPointerInst *X) {
357353
return llvm::hash_combine(X->getKind(), X->getOperand(), X->getType());
358354
}
@@ -901,7 +897,6 @@ bool CSE::canHandle(SILInstruction *Inst) {
901897
case SILInstructionKind::CondFailInst:
902898
case SILInstructionKind::EnumInst:
903899
case SILInstructionKind::UncheckedEnumDataInst:
904-
case SILInstructionKind::IsNonnullInst:
905900
case SILInstructionKind::UncheckedTrivialBitCastInst:
906901
case SILInstructionKind::UncheckedBitwiseCastInst:
907902
case SILInstructionKind::RefToRawPointerInst:

lib/SILOptimizer/Utils/SILInliner.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,6 @@ InlineCost swift::instructionInlineCost(SILInstruction &I) {
394394
case SILInstructionKind::InitExistentialMetatypeInst:
395395
case SILInstructionKind::InitExistentialRefInst:
396396
case SILInstructionKind::InjectEnumAddrInst:
397-
case SILInstructionKind::IsNonnullInst:
398397
case SILInstructionKind::LoadInst:
399398
case SILInstructionKind::LoadBorrowInst:
400399
case SILInstructionKind::LoadUnownedInst:

lib/Serialization/DeserializeSIL.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1402,7 +1402,6 @@ bool SILDeserializer::readSILInstruction(SILFunction *Fn, SILBasicBlock *BB,
14021402
UNARY_INSTRUCTION(DeinitExistentialValue)
14031403
UNARY_INSTRUCTION(EndBorrowArgument)
14041404
UNARY_INSTRUCTION(DestroyAddr)
1405-
UNARY_INSTRUCTION(IsNonnull)
14061405
UNARY_INSTRUCTION(Return)
14071406
UNARY_INSTRUCTION(Throw)
14081407
UNARY_INSTRUCTION(FixLifetime)

lib/Serialization/SerializeSIL.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1080,7 +1080,6 @@ void SILSerializer::writeSILInstruction(const SILInstruction &SI) {
10801080
case SILInstructionKind::DeinitExistentialAddrInst:
10811081
case SILInstructionKind::DeinitExistentialValueInst:
10821082
case SILInstructionKind::DestroyAddrInst:
1083-
case SILInstructionKind::IsNonnullInst:
10841083
case SILInstructionKind::LoadInst:
10851084
case SILInstructionKind::LoadBorrowInst:
10861085
case SILInstructionKind::BeginBorrowInst:

test/IRGen/function_types.sil

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -61,18 +61,6 @@ entry(%x : $*X):
6161
return %z : $()
6262
}
6363

64-
// CHECK-LABEL: define{{( protected)?}} swiftcc i1 @test_is_nonnull_function(i8*, %swift.refcounted*) {{.*}} {
65-
// CHECK-NEXT: entry:
66-
// CHECK-NEXT: %2 = icmp ne i8* %0, null
67-
// CHECK-NEXT: ret i1 %2
68-
// CHECK-NEXT: }
69-
70-
sil @test_is_nonnull_function : $@convention(thin) (() -> ()) -> Builtin.Int1 {
71-
bb0(%0 : $() -> ()):
72-
%3 = is_nonnull %0 : $() -> ()
73-
return %3 : $Builtin.Int1 // id: %5
74-
}
75-
7664
// CHECK-LABEL: define{{( protected)?}} swiftcc i8* @test_function_to_pointer(i8*)
7765
// CHECK-NEXT: entry:
7866
// CHECK-NEXT: ret i8* %0

test/SIL/Parser/undef.sil

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,6 @@ bb0:
244244
bridge_object_to_word undef : $Builtin.BridgeObject to $Builtin.Word
245245
// CHECK: thin_to_thick_function undef : $@convention(thin) () -> () to $() -> ()
246246
thin_to_thick_function undef : $@convention(thin) () -> () to $() -> ()
247-
// CHECK: is_nonnull undef : $C
248-
is_nonnull undef : $C
249247

250248
// Checked Conversions
251249

test/SIL/ownership-verifier/use_verifier.sil

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -387,13 +387,6 @@ bb0(%0 : @owned $SuperKlass):
387387
return %9999 : $()
388388
}
389389

390-
sil @test_isnonnull : $@convention(thin) (@owned SuperKlass) -> Builtin.Int1 {
391-
bb0(%0 : @owned $SuperKlass):
392-
%1 = is_nonnull %0 : $SuperKlass
393-
destroy_value %0 : $SuperKlass
394-
return %1 : $Builtin.Int1
395-
}
396-
397390
//////////////////////
398391
// Terminator Tests //
399392
//////////////////////
@@ -980,4 +973,4 @@ bb2(%2 : @owned $Builtin.NativeObject):
980973
bb3:
981974
%9999 = tuple()
982975
return %9999 : $()
983-
}
976+
}

test/SILGen/objc_thunks.swift

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -427,22 +427,6 @@ extension Hoozit {
427427
// CHECK: [[CTOR:%[0-9]+]] = objc_method [[SELF:%[0-9]+]] : $Hoozit, #Hoozit.init!initializer.1.foreign : (Hoozit.Type) -> (Int) -> Hoozit, $@convention(objc_method) (Int, @owned Hoozit) -> @owned Hoozit
428428
// CHECK: [[NEW_SELF:%[0-9]+]] = apply [[CTOR]]
429429
// CHECK: store [[NEW_SELF]] to [init] [[PB_BOX]] : $*Hoozit
430-
// CHECK: [[RELOADED_SELF:%.*]] = load_borrow [[PB_BOX]]
431-
// CHECK: [[NONNULL:%[0-9]+]] = is_nonnull [[RELOADED_SELF]] : $Hoozit
432-
// CHECK: end_borrow [[RELOADED_SELF]] from [[PB_BOX]]
433-
// CHECK-NEXT: cond_br [[NONNULL]], [[NONNULL_BB:bb[0-9]+]], [[NULL_BB:bb[0-9]+]]
434-
// CHECK: [[NULL_BB]]:
435-
// CHECK-NEXT: destroy_value [[X_BOX]] : ${ var X }
436-
// CHECK-NEXT: br [[EPILOG_BB:bb[0-9]+]]
437-
438-
// CHECK: [[NONNULL_BB]]:
439-
// CHECK: [[OTHER_REF:%[0-9]+]] = function_ref @_T011objc_thunks5otheryyF : $@convention(thin) () -> ()
440-
// CHECK-NEXT: apply [[OTHER_REF]]() : $@convention(thin) () -> ()
441-
// CHECK-NEXT: destroy_value [[X_BOX]] : ${ var X }
442-
// CHECK-NEXT: br [[EPILOG_BB]]
443-
444-
// CHECK: [[EPILOG_BB]]:
445-
// CHECK-NOT: super_method
446430
// CHECK: return
447431
self.init(int:Int(d))
448432
other()

test/SILOptimizer/cse.sil

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -806,19 +806,6 @@ bb0(%0 : $@sil_unmanaged C):
806806
return %3: $(C, C)
807807
}
808808

809-
// CHECK-LABEL: sil @cse_is_nonnull
810-
// CHECK: is_nonnull
811-
// CHECK-NOT: is_nonnull
812-
// CHECK: tuple
813-
// CHECK: return
814-
sil @cse_is_nonnull : $@convention(thin) (C) -> (Builtin.Int1, Builtin.Int1) {
815-
bb0(%0 : $C):
816-
%1 = is_nonnull %0 : $C
817-
%2 = is_nonnull %0 : $C
818-
%3 = tuple (%1: $Builtin.Int1, %2: $Builtin.Int1)
819-
return %3: $(Builtin.Int1, Builtin.Int1)
820-
}
821-
822809
enum Enum1 {
823810
case Case1
824811
case Case2

0 commit comments

Comments
 (0)