From 180eba4a524da866038eff10516ecbb58af8729d Mon Sep 17 00:00:00 2001 From: Christian Poveda Date: Wed, 21 Aug 2019 01:31:34 -0500 Subject: [PATCH 1/2] Add sire as a submodule --- .gitmodules | 3 +++ src/librustc_interface/Cargo.toml | 1 + src/sire | 1 + 3 files changed, 5 insertions(+) create mode 160000 src/sire diff --git a/.gitmodules b/.gitmodules index f64e21c5af0e4..5a832b00ecd4b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -47,3 +47,6 @@ [submodule "src/doc/embedded-book"] path = src/doc/embedded-book url = https://github.com/rust-embedded/book.git +[submodule "sire"] + path = src/sire + url = git@github.com:christianpoveda/sire diff --git a/src/librustc_interface/Cargo.toml b/src/librustc_interface/Cargo.toml index 16b377d5bccea..6d8d4fdaed84a 100644 --- a/src/librustc_interface/Cargo.toml +++ b/src/librustc_interface/Cargo.toml @@ -33,4 +33,5 @@ rustc_errors = { path = "../librustc_errors" } rustc_plugin = { path = "../librustc_plugin", package = "rustc_plugin_impl" } rustc_privacy = { path = "../librustc_privacy" } rustc_resolve = { path = "../librustc_resolve" } +sire = { path = "../sire/sire" } tempfile = "3.0.5" diff --git a/src/sire b/src/sire new file mode 160000 index 0000000000000..f3064d4c4f285 --- /dev/null +++ b/src/sire @@ -0,0 +1 @@ +Subproject commit f3064d4c4f285865efda0929870f6e3c9b9ba9ef From 5e5ceb25f343680ce1a4c0d83c0b7c650cccef49 Mon Sep 17 00:00:00 2001 From: Christian Poveda Date: Wed, 21 Aug 2019 09:02:20 -0500 Subject: [PATCH 2/2] Invoke sire --- src/librustc_interface/passes.rs | 16 +++++++++++++++- src/sire | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/librustc_interface/passes.rs b/src/librustc_interface/passes.rs index e99ef4570f18b..86535ddb50aec 100644 --- a/src/librustc_interface/passes.rs +++ b/src/librustc_interface/passes.rs @@ -798,7 +798,21 @@ pub fn default_provide(providers: &mut ty::query::Providers<'_>) { lint::provide(providers); rustc_lint::provide(providers); providers.sire_equality_check = |tcx, (a, b)| { - // invoke sire here + use rustc::mir::interpret::ConstValue; + + let mut evaluator = sire::eval::Evaluator::from_tcx(tcx); + + if let (ConstValue::Unevaluated(def_id_a, _ ), ConstValue::Unevaluated(def_id_b, _)) = (a.val, b.val) { + info!("sire: Both of the sides are unevaluated"); + let sir_a = evaluator.eval_mir(def_id_a); + let sir_b = evaluator.eval_mir(def_id_b); + info!("a = {:?}", sir_a); + info!("b = {:?}", sir_b); + } else { + warn!("sire: One of the sides is evaluated"); + } + + false }; } diff --git a/src/sire b/src/sire index f3064d4c4f285..abf17f9ee4506 160000 --- a/src/sire +++ b/src/sire @@ -1 +1 @@ -Subproject commit f3064d4c4f285865efda0929870f6e3c9b9ba9ef +Subproject commit abf17f9ee4506cab06fb324d574c1af518d12139