Skip to content

Commit 463e52b

Browse files
committed
[cse] Add support for string_literal.
Swift SVN r10824
1 parent 05899b7 commit 463e52b

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

lib/SILPasses/CSE.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ namespace {
6262
case ValueKind::GlobalAddrInst:
6363
case ValueKind::IntegerLiteralInst:
6464
case ValueKind::FloatLiteralInst:
65+
case ValueKind::StringLiteralInst:
6566
return true;
6667
default:
6768
return false;
@@ -114,6 +115,11 @@ unsigned llvm::DenseMapInfo<SimpleValue>::getHashValue(SimpleValue Val) {
114115
X->getType(),
115116
X->getBits());
116117
}
118+
case ValueKind::StringLiteralInst: {
119+
auto *X = cast<StringLiteralInst>(Inst);
120+
return llvm::hash_combine(unsigned(ValueKind::StringLiteralInst),
121+
X->getValue());
122+
}
117123
default:
118124
llvm_unreachable("Unhandled ValueKind.");
119125
}

test/SILPasses/cse.sil

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,3 +482,20 @@ sil @floatliteral : $@thin () -> (Builtin.FPIEEE32) {
482482
%4 = apply %2(%0, %1) : $@thin (Builtin.FPIEEE32, Builtin.FPIEEE32) -> Builtin.FPIEEE32 // user: %6
483483
return %4 : $(Builtin.FPIEEE32)
484484
}
485+
486+
sil @string_use : $@thin (Builtin.RawPointer, Builtin.Int64, Builtin.Int1, String.metatype, Builtin.RawPointer, Builtin.Int64, Builtin.Int1, String.metatype) -> ()
487+
488+
489+
// CHECK-LABEL: stringliteral
490+
// CHECK: [[TARGET:%[0-9]+]] = string_literal "First"
491+
// CHECK-NOT: string_literal "First"
492+
// CHECK: apply {{%[0-9]+}}([[TARGET]]#0, [[TARGET]]#1, [[TARGET]]#2, {{%[0-9]+}}, [[TARGET]]#0, [[TARGET]]#1, [[TARGET]]#2, {{%[0-9]+}})
493+
sil @stringliteral : $@thin () -> () {
494+
%0 = string_literal "First"
495+
%1 = string_literal "First"
496+
%2 = metatype $String.metatype
497+
%3 = function_ref @string_use : $@thin (Builtin.RawPointer, Builtin.Int64, Builtin.Int1, String.metatype, Builtin.RawPointer, Builtin.Int64, Builtin.Int1, String.metatype) -> ()
498+
apply %3 (%0#0, %0#1, %0#2, %2, %1#0, %1#1, %1#2, %2): $@thin (Builtin.RawPointer, Builtin.Int64, Builtin.Int1, String.metatype, Builtin.RawPointer, Builtin.Int64, Builtin.Int1, String.metatype) -> ()
499+
%4 = tuple()
500+
return %4 : $()
501+
}

0 commit comments

Comments
 (0)