Skip to content

Commit c907dab

Browse files
committed
Revert "Merge pull request #26608 from gottesmm/ownership-onone-stdlibcore"
This reverts commit 4ecab47, reversing changes made to f743c68.
1 parent f0038b2 commit c907dab

File tree

4 files changed

+21
-60
lines changed

4 files changed

+21
-60
lines changed

lib/SILOptimizer/Utils/ConstantFolding.cpp

Lines changed: 19 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1526,71 +1526,55 @@ constantFoldGlobalStringTablePointerBuiltin(BuiltinInst *bi,
15261526
}
15271527

15281528
/// Initialize the worklist to all of the constant instructions.
1529-
void ConstantFolder::initializeWorklist(SILFunction &f) {
1530-
for (auto &block : f) {
1531-
for (auto ii = block.begin(), ie = block.end(); ii != ie; ) {
1532-
auto *inst = &*ii;
1533-
++ii;
1534-
1535-
// TODO: Eliminate trivially dead instructions here.
1536-
1529+
void ConstantFolder::initializeWorklist(SILFunction &F) {
1530+
for (auto &BB : F) {
1531+
for (auto &I : BB) {
15371532
// If `I` is a floating-point literal instruction where the literal is
15381533
// inf, it means the input has a literal that overflows even
15391534
// MaxBuiltinFloatType. Diagnose this error, but allow this instruction
15401535
// to be folded, if needed.
1541-
if (auto *floatLit = dyn_cast<FloatLiteralInst>(inst)) {
1536+
if (auto floatLit = dyn_cast<FloatLiteralInst>(&I)) {
15421537
APFloat fpVal = floatLit->getValue();
15431538
if (EnableDiagnostics && fpVal.isInfinity()) {
15441539
SmallString<10> litStr;
15451540
tryExtractLiteralText(floatLit, litStr);
1546-
diagnose(inst->getModule().getASTContext(), inst->getLoc().getSourceLoc(),
1541+
diagnose(I.getModule().getASTContext(), I.getLoc().getSourceLoc(),
15471542
diag::warning_float_overflows_maxbuiltin, litStr,
15481543
fpVal.isNegative());
15491544
}
15501545
}
15511546

1552-
if (isFoldable(inst) && inst->hasUsesOfAnyResult()) {
1553-
WorkList.insert(inst);
1547+
if (isFoldable(&I) && I.hasUsesOfAnyResult()) {
1548+
WorkList.insert(&I);
15541549
continue;
15551550
}
15561551

15571552
// - Should we replace calls to assert_configuration by the assert
15581553
// configuration and fold calls to any cond_unreachable.
15591554
if (AssertConfiguration != SILOptions::DisableReplacement &&
1560-
(isApplyOfBuiltin(*inst, BuiltinValueKind::AssertConf) ||
1561-
isApplyOfBuiltin(*inst, BuiltinValueKind::CondUnreachable))) {
1562-
WorkList.insert(inst);
1563-
continue;
1564-
}
1565-
1566-
if (isApplyOfBuiltin(*inst, BuiltinValueKind::GlobalStringTablePointer)) {
1567-
WorkList.insert(inst);
1555+
(isApplyOfBuiltin(I, BuiltinValueKind::AssertConf) ||
1556+
isApplyOfBuiltin(I, BuiltinValueKind::CondUnreachable))) {
1557+
WorkList.insert(&I);
15681558
continue;
15691559
}
15701560

1571-
if (isa<CheckedCastBranchInst>(inst) ||
1572-
isa<CheckedCastAddrBranchInst>(inst) ||
1573-
isa<UnconditionalCheckedCastInst>(inst) ||
1574-
isa<UnconditionalCheckedCastAddrInst>(inst)) {
1575-
WorkList.insert(inst);
1561+
if (isApplyOfBuiltin(I, BuiltinValueKind::GlobalStringTablePointer)) {
1562+
WorkList.insert(&I);
15761563
continue;
15771564
}
15781565

1579-
if (isApplyOfStringConcat(*inst)) {
1580-
WorkList.insert(inst);
1566+
if (isa<CheckedCastBranchInst>(&I) ||
1567+
isa<CheckedCastAddrBranchInst>(&I) ||
1568+
isa<UnconditionalCheckedCastInst>(&I) ||
1569+
isa<UnconditionalCheckedCastAddrInst>(&I)) {
1570+
WorkList.insert(&I);
15811571
continue;
15821572
}
15831573

1584-
// If we have nominal type literals like struct, tuple, enum visit them
1585-
// like we do in the worklist to see if we can fold any projection
1586-
// manipulation operations.
1587-
if (isa<StructInst>(inst) || isa<TupleInst>(inst)) {
1588-
// TODO: Enum.
1589-
WorkList.insert(inst);
1574+
if (!isApplyOfStringConcat(I)) {
15901575
continue;
15911576
}
1592-
1593-
// ...
1577+
WorkList.insert(&I);
15941578
}
15951579
}
15961580
}

stdlib/public/core/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,6 @@ if(SWIFT_STDLIB_ENABLE_STDLIBCORE_EXCLUSIVITY_CHECKING)
292292
list(APPEND swift_stdlib_compile_flags "-enforce-exclusivity=checked")
293293
endif()
294294

295-
list(APPEND swift_stdlib_compile_flags "-Xfrontend" "-enable-ownership-stripping-after-serialization")
296-
297295
if(SWIFT_CHECK_ESSENTIAL_STDLIB)
298296
add_swift_target_library(swift_stdlib_essential ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_STDLIB IS_STDLIB_CORE
299297
INSTALL_IN_COMPONENT never_install

test/SILOptimizer/constant_propagation.sil

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,23 +1004,3 @@ bb0(%0 : $Builtin.Int1):
10041004
%9999 = tuple()
10051005
return %9999 : $()
10061006
}
1007-
1008-
// CHECK-LABEL: sil @simplify_struct_test : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
1009-
// CHECK-NOT: struct
1010-
// CHECK: } // end sil function 'simplify_struct_test'
1011-
sil @simplify_struct_test : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
1012-
bb0(%0 : $Builtin.Int64):
1013-
%1 = struct $Int64 (%0 : $Builtin.Int64)
1014-
%2 = struct_extract %1 : $Int64, #Int64.value
1015-
return %2 : $Builtin.Int64
1016-
}
1017-
1018-
// CHECK-LABEL: sil @simplify_tuple_test : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
1019-
// CHECK-NOT: tuple
1020-
// CHECK: } // end sil function 'simplify_tuple_test'
1021-
sil @simplify_tuple_test : $@convention(thin) (Builtin.Int64) -> Builtin.Int64 {
1022-
bb0(%0 : $Builtin.Int64):
1023-
%1 = tuple(%0 : $Builtin.Int64, %0 : $Builtin.Int64)
1024-
%2 = tuple_extract %1 : $(Builtin.Int64, Builtin.Int64), 0
1025-
return %2 : $Builtin.Int64
1026-
}

test/SILOptimizer/pound_assert.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,8 @@ func test_loops() {
6767
#assert(infiniteLoop() == 1)
6868
}
6969

70-
// NOTE: We currently hit the limit of 512 on a debug_value in the prelude of
71-
// this function. TODO: What is the right thing to do here?
72-
func recursive(a: Int) -> Int { // expected-note {{limit exceeded here}}
70+
func recursive(a: Int) -> Int {
71+
// expected-note@+1 {{limit exceeded here}}
7372
return a == 0 ? 0 : recursive(a: a-1)
7473
}
7574

0 commit comments

Comments
 (0)