Skip to content

Commit 4bc8ec3

Browse files
committed
Use Cow<'static, str> for InlineAsmTemplatePiece::String
1 parent 2c243d9 commit 4bc8ec3

File tree

4 files changed

+27
-26
lines changed

4 files changed

+27
-26
lines changed

compiler/rustc_ast/src/ast.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ use rustc_macros::{Decodable, Encodable, HashStable_Generic};
3636
use rustc_span::source_map::{respan, Spanned};
3737
use rustc_span::symbol::{kw, sym, Ident, Symbol};
3838
use rustc_span::{ErrorGuaranteed, Span, DUMMY_SP};
39+
use std::borrow::Cow;
3940
use std::cmp;
4041
use std::fmt;
4142
use std::mem;
@@ -2264,7 +2265,7 @@ impl std::fmt::Debug for InlineAsmOptions {
22642265

22652266
#[derive(Clone, PartialEq, Encodable, Decodable, Debug, Hash, HashStable_Generic)]
22662267
pub enum InlineAsmTemplatePiece {
2267-
String(String),
2268+
String(Cow<'static, str>),
22682269
Placeholder { operand_idx: usize, modifier: Option<char>, span: Span },
22692270
}
22702271

compiler/rustc_builtin_macros/src/asm.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,7 @@ fn expand_preparsed_asm(
461461

462462
for (i, template_expr) in args.templates.into_iter().enumerate() {
463463
if i != 0 {
464-
template.push(ast::InlineAsmTemplatePiece::String("\n".to_string()));
464+
template.push(ast::InlineAsmTemplatePiece::String("\n".into()));
465465
}
466466

467467
let msg = "asm template must be a string literal";
@@ -529,7 +529,7 @@ fn expand_preparsed_asm(
529529

530530
// Don't treat raw asm as a format string.
531531
if args.options.contains(ast::InlineAsmOptions::RAW) {
532-
template.push(ast::InlineAsmTemplatePiece::String(template_str.to_string()));
532+
template.push(ast::InlineAsmTemplatePiece::String(template_str.to_string().into()));
533533
let template_num_lines = 1 + template_str.matches('\n').count();
534534
line_spans.extend(std::iter::repeat(template_sp).take(template_num_lines));
535535
continue;
@@ -579,7 +579,7 @@ fn expand_preparsed_asm(
579579
for piece in unverified_pieces {
580580
match piece {
581581
parse::Piece::String(s) => {
582-
template.push(ast::InlineAsmTemplatePiece::String(s.to_string()))
582+
template.push(ast::InlineAsmTemplatePiece::String(s.to_string().into()))
583583
}
584584
parse::Piece::NextArgument(arg) => {
585585
let span = arg_spans.next().unwrap_or(template_sp);

compiler/rustc_codegen_cranelift/src/inline_asm.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,7 @@ pub(crate) fn codegen_inline_asm_terminator<'tcx>(
4646
// Used by panic_abort on Windows, but uses a syntax which only happens to work with
4747
// asm!() by accident and breaks with the GNU assembler as well as global_asm!() for
4848
// the LLVM backend.
49-
if template.len() == 1
50-
&& template[0] == InlineAsmTemplatePiece::String("int $$0x29".to_string())
51-
{
49+
if template.len() == 1 && template[0] == InlineAsmTemplatePiece::String("int $$0x29".into()) {
5250
fx.bcx.ins().trap(TrapCode::User(1));
5351
return;
5452
}

compiler/rustc_codegen_cranelift/src/intrinsics/llvm_x86.rs

+21-19
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
4141
shl rdx, 32
4242
or rax, rdx
4343
"
44-
.to_string(),
44+
.into(),
4545
)],
4646
&[
4747
CInlineAsmOperand::In {
@@ -463,7 +463,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
463463
// into 0x80000000 for which Cranelift doesn't have a native instruction.
464464
codegen_inline_asm_inner(
465465
fx,
466-
&[InlineAsmTemplatePiece::String(format!("cvttps2dq xmm0, xmm0"))],
466+
&[InlineAsmTemplatePiece::String("cvttps2dq xmm0, xmm0".into())],
467467
&[CInlineAsmOperand::InOut {
468468
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm0)),
469469
_late: true,
@@ -867,7 +867,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
867867

868868
codegen_inline_asm_inner(
869869
fx,
870-
&[InlineAsmTemplatePiece::String(asm.to_string())],
870+
&[InlineAsmTemplatePiece::String(asm.into())],
871871
&[
872872
CInlineAsmOperand::InOut {
873873
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::ax)),
@@ -906,7 +906,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
906906

907907
codegen_inline_asm_inner(
908908
fx,
909-
&[InlineAsmTemplatePiece::String(format!("pcmpestri xmm0, xmm1, {imm8}"))],
909+
&[InlineAsmTemplatePiece::String(format!("pcmpestri xmm0, xmm1, {imm8}").into())],
910910
&[
911911
CInlineAsmOperand::In {
912912
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm0)),
@@ -959,7 +959,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
959959

960960
codegen_inline_asm_inner(
961961
fx,
962-
&[InlineAsmTemplatePiece::String(format!("pcmpestrm xmm0, xmm1, {imm8}"))],
962+
&[InlineAsmTemplatePiece::String(format!("pcmpestrm xmm0, xmm1, {imm8}").into())],
963963
&[
964964
CInlineAsmOperand::InOut {
965965
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm0)),
@@ -1007,7 +1007,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
10071007

10081008
codegen_inline_asm_inner(
10091009
fx,
1010-
&[InlineAsmTemplatePiece::String(format!("pclmulqdq xmm0, xmm1, {imm8}"))],
1010+
&[InlineAsmTemplatePiece::String(format!("pclmulqdq xmm0, xmm1, {imm8}").into())],
10111011
&[
10121012
CInlineAsmOperand::InOut {
10131013
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm0)),
@@ -1044,7 +1044,9 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
10441044

10451045
codegen_inline_asm_inner(
10461046
fx,
1047-
&[InlineAsmTemplatePiece::String(format!("aeskeygenassist xmm0, xmm0, {imm8}"))],
1047+
&[InlineAsmTemplatePiece::String(
1048+
format!("aeskeygenassist xmm0, xmm0, {imm8}").into(),
1049+
)],
10481050
&[CInlineAsmOperand::InOut {
10491051
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm0)),
10501052
_late: true,
@@ -1063,7 +1065,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
10631065

10641066
codegen_inline_asm_inner(
10651067
fx,
1066-
&[InlineAsmTemplatePiece::String("aesimc xmm0, xmm0".to_string())],
1068+
&[InlineAsmTemplatePiece::String("aesimc xmm0, xmm0".into())],
10671069
&[CInlineAsmOperand::InOut {
10681070
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm0)),
10691071
_late: true,
@@ -1083,7 +1085,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
10831085

10841086
codegen_inline_asm_inner(
10851087
fx,
1086-
&[InlineAsmTemplatePiece::String("aesenc xmm0, xmm1".to_string())],
1088+
&[InlineAsmTemplatePiece::String("aesenc xmm0, xmm1".into())],
10871089
&[
10881090
CInlineAsmOperand::InOut {
10891091
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm0)),
@@ -1109,7 +1111,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
11091111

11101112
codegen_inline_asm_inner(
11111113
fx,
1112-
&[InlineAsmTemplatePiece::String("aesenclast xmm0, xmm1".to_string())],
1114+
&[InlineAsmTemplatePiece::String("aesenclast xmm0, xmm1".into())],
11131115
&[
11141116
CInlineAsmOperand::InOut {
11151117
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm0)),
@@ -1135,7 +1137,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
11351137

11361138
codegen_inline_asm_inner(
11371139
fx,
1138-
&[InlineAsmTemplatePiece::String("aesdec xmm0, xmm1".to_string())],
1140+
&[InlineAsmTemplatePiece::String("aesdec xmm0, xmm1".into())],
11391141
&[
11401142
CInlineAsmOperand::InOut {
11411143
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm0)),
@@ -1161,7 +1163,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
11611163

11621164
codegen_inline_asm_inner(
11631165
fx,
1164-
&[InlineAsmTemplatePiece::String("aesdeclast xmm0, xmm1".to_string())],
1166+
&[InlineAsmTemplatePiece::String("aesdeclast xmm0, xmm1".into())],
11651167
&[
11661168
CInlineAsmOperand::InOut {
11671169
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm0)),
@@ -1199,7 +1201,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
11991201

12001202
codegen_inline_asm_inner(
12011203
fx,
1202-
&[InlineAsmTemplatePiece::String(format!("sha1rnds4 xmm1, xmm2, {func}"))],
1204+
&[InlineAsmTemplatePiece::String(format!("sha1rnds4 xmm1, xmm2, {func}").into())],
12031205
&[
12041206
CInlineAsmOperand::InOut {
12051207
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm1)),
@@ -1225,7 +1227,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
12251227

12261228
codegen_inline_asm_inner(
12271229
fx,
1228-
&[InlineAsmTemplatePiece::String("sha1msg1 xmm1, xmm2".to_string())],
1230+
&[InlineAsmTemplatePiece::String("sha1msg1 xmm1, xmm2".into())],
12291231
&[
12301232
CInlineAsmOperand::InOut {
12311233
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm1)),
@@ -1251,7 +1253,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
12511253

12521254
codegen_inline_asm_inner(
12531255
fx,
1254-
&[InlineAsmTemplatePiece::String("sha1msg2 xmm1, xmm2".to_string())],
1256+
&[InlineAsmTemplatePiece::String("sha1msg2 xmm1, xmm2".into())],
12551257
&[
12561258
CInlineAsmOperand::InOut {
12571259
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm1)),
@@ -1277,7 +1279,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
12771279

12781280
codegen_inline_asm_inner(
12791281
fx,
1280-
&[InlineAsmTemplatePiece::String("sha1nexte xmm1, xmm2".to_string())],
1282+
&[InlineAsmTemplatePiece::String("sha1nexte xmm1, xmm2".into())],
12811283
&[
12821284
CInlineAsmOperand::InOut {
12831285
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm1)),
@@ -1304,7 +1306,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
13041306

13051307
codegen_inline_asm_inner(
13061308
fx,
1307-
&[InlineAsmTemplatePiece::String("sha256rnds2 xmm1, xmm2".to_string())],
1309+
&[InlineAsmTemplatePiece::String("sha256rnds2 xmm1, xmm2".into())],
13081310
&[
13091311
CInlineAsmOperand::InOut {
13101312
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm1)),
@@ -1335,7 +1337,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
13351337

13361338
codegen_inline_asm_inner(
13371339
fx,
1338-
&[InlineAsmTemplatePiece::String("sha256msg1 xmm1, xmm2".to_string())],
1340+
&[InlineAsmTemplatePiece::String("sha256msg1 xmm1, xmm2".into())],
13391341
&[
13401342
CInlineAsmOperand::InOut {
13411343
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm1)),
@@ -1361,7 +1363,7 @@ pub(crate) fn codegen_x86_llvm_intrinsic_call<'tcx>(
13611363

13621364
codegen_inline_asm_inner(
13631365
fx,
1364-
&[InlineAsmTemplatePiece::String("sha256msg2 xmm1, xmm2".to_string())],
1366+
&[InlineAsmTemplatePiece::String("sha256msg2 xmm1, xmm2".into())],
13651367
&[
13661368
CInlineAsmOperand::InOut {
13671369
reg: InlineAsmRegOrRegClass::Reg(InlineAsmReg::X86(X86InlineAsmReg::xmm1)),

0 commit comments

Comments
 (0)