Let backends access span information

Sometimes, a backend may need to emit warnings, errors, or otherwise
need to know the span of the current item in a basic block. So, add a
set_span method to give the backend that information.
This commit is contained in:
khyperia 2020-10-06 15:39:12 +02:00
parent 5849a7eca9
commit c5bc95676b
3 changed files with 6 additions and 1 deletions

View file

@ -55,6 +55,7 @@ impl<D> DebugScope<D> {
impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
pub fn set_debug_loc(&self, bx: &mut Bx, source_info: mir::SourceInfo) {
let (scope, span) = self.debug_loc(source_info);
bx.set_span(span);
if let Some(scope) = scope {
bx.set_source_location(scope, span);
}

View file

@ -15,6 +15,7 @@ use crate::MemFlags;
use rustc_middle::ty::layout::{HasParamEnv, TyAndLayout};
use rustc_middle::ty::Ty;
use rustc_span::Span;
use rustc_target::abi::{Abi, Align, Scalar, Size};
use rustc_target::spec::HasTargetSpec;
@ -44,6 +45,7 @@ pub trait BuilderMethods<'a, 'tcx>:
fn build_sibling_block(&self, name: &str) -> Self;
fn cx(&self) -> &Self::CodegenCx;
fn llbb(&self) -> Self::BasicBlock;
fn set_span(&self, span: Span);
fn position_at_end(&mut self, llbb: Self::BasicBlock);
fn ret_void(&mut self);