From 0aa7f4d2f2ff55b8cfe5de5e4e7665a8fdeaf050 Mon Sep 17 00:00:00 2001 From: Oliver Scherer Date: Sat, 2 May 2020 21:44:25 +0200 Subject: Make TLS accesses explicit in MIR --- src/librustc_codegen_ssa/mir/rvalue.rs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/librustc_codegen_ssa') diff --git a/src/librustc_codegen_ssa/mir/rvalue.rs b/src/librustc_codegen_ssa/mir/rvalue.rs index bb532abd84b..57f72b1065d 100644 --- a/src/librustc_codegen_ssa/mir/rvalue.rs +++ b/src/librustc_codegen_ssa/mir/rvalue.rs @@ -522,6 +522,13 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { let operand = OperandRef { val: OperandValue::Immediate(val), layout: box_layout }; (bx, operand) } + mir::Rvalue::ThreadLocalRef(def_id) => { + assert!(bx.cx().tcx().is_static(def_id)); + let static_ = bx.get_static(def_id); + let layout = bx.layout_of(bx.cx().tcx().static_ptr_ty(def_id)); + let operand = OperandRef::from_immediate_or_packed_pair(&mut bx, static_, layout); + (bx, operand) + } mir::Rvalue::Use(ref operand) => { let operand = self.codegen_operand(&mut bx, operand); (bx, operand) @@ -745,6 +752,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> { mir::Rvalue::UnaryOp(..) | mir::Rvalue::Discriminant(..) | mir::Rvalue::NullaryOp(..) | + mir::Rvalue::ThreadLocalRef(_) | mir::Rvalue::Use(..) => // (*) true, mir::Rvalue::Repeat(..) | -- cgit 1.4.1-3-g733a5