Skip to content

Commit 5f6ddb9

Browse files
committed
Move span_invalid_monomorphization_error from cg_llvm to cg_ssa
The associated long diagnostic didn't get registered before
1 parent 5f203d5 commit 5f6ddb9

File tree

5 files changed

+42
-46
lines changed

5 files changed

+42
-46
lines changed

src/librustc_codegen_llvm/error_codes.rs

Lines changed: 0 additions & 38 deletions
This file was deleted.

src/librustc_codegen_llvm/intrinsic.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ use rustc_codegen_ssa::common::{IntPredicate, TypeKind};
2020
use rustc::hir;
2121
use syntax::ast::{self, FloatTy};
2222

23+
use rustc_codegen_ssa::common::span_invalid_monomorphization_error;
2324
use rustc_codegen_ssa::traits::*;
2425

25-
use rustc::session::Session;
2626
use syntax_pos::Span;
2727

2828
use std::cmp::Ordering;
@@ -1026,10 +1026,6 @@ fn get_rust_try_fn<'ll, 'tcx>(
10261026
rust_try
10271027
}
10281028

1029-
fn span_invalid_monomorphization_error(a: &Session, b: Span, c: &str) {
1030-
span_err!(a, b, E0511, "{}", c);
1031-
}
1032-
10331029
fn generic_simd_intrinsic(
10341030
bx: &mut Builder<'a, 'll, 'tcx>,
10351031
name: &str,

src/librustc_codegen_llvm/lib.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ extern crate rustc_fs_util;
3838
extern crate rustc_driver as _;
3939

4040
#[macro_use] extern crate log;
41-
#[macro_use] extern crate syntax;
41+
extern crate syntax;
4242
extern crate syntax_pos;
4343
extern crate rustc_errors as errors;
4444

@@ -64,8 +64,6 @@ use rustc::util::common::ErrorReported;
6464
use rustc_codegen_ssa::ModuleCodegen;
6565
use rustc_codegen_utils::codegen_backend::CodegenBackend;
6666

67-
mod error_codes;
68-
6967
mod back {
7068
pub mod archive;
7169
pub mod bytecode;

src/librustc_codegen_ssa/common.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#![allow(non_camel_case_types, non_snake_case)]
22

33
use rustc::ty::{Ty, TyCtxt};
4+
use rustc::session::Session;
45
use syntax_pos::Span;
56

67
use rustc::hir::def_id::DefId;
@@ -200,3 +201,7 @@ pub fn shift_mask_val<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
200201
_ => bug!("shift_mask_val: expected Integer or Vector, found {:?}", kind),
201202
}
202203
}
204+
205+
pub fn span_invalid_monomorphization_error(a: &Session, b: Span, c: &str) {
206+
span_err!(a, b, E0511, "{}", c);
207+
}

src/librustc_codegen_ssa/error_codes.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,40 @@
11
syntax::register_diagnostics! {
22

3+
E0511: r##"
4+
Invalid monomorphization of an intrinsic function was used. Erroneous code
5+
example:
6+
7+
```ignore (error-emitted-at-codegen-which-cannot-be-handled-by-compile_fail)
8+
#![feature(platform_intrinsics)]
9+
10+
extern "platform-intrinsic" {
11+
fn simd_add<T>(a: T, b: T) -> T;
12+
}
13+
14+
fn main() {
15+
unsafe { simd_add(0, 1); }
16+
// error: invalid monomorphization of `simd_add` intrinsic
17+
}
18+
```
19+
20+
The generic type has to be a SIMD type. Example:
21+
22+
```
23+
#![feature(repr_simd)]
24+
#![feature(platform_intrinsics)]
25+
26+
#[repr(simd)]
27+
#[derive(Copy, Clone)]
28+
struct i32x2(i32, i32);
29+
30+
extern "platform-intrinsic" {
31+
fn simd_add<T>(a: T, b: T) -> T;
32+
}
33+
34+
unsafe { simd_add(i32x2(0, 0), i32x2(1, 2)); } // ok!
35+
```
36+
"##,
37+
338
E0668: r##"
439
Malformed inline assembly rejected by LLVM.
540

0 commit comments

Comments
 (0)