diff options
| author | Oliver Scherer <github35764891676564198441@oli-obk.de> | 2019-02-16 12:36:23 +0100 |
|---|---|---|
| committer | Oliver Scherer <github35764891676564198441@oli-obk.de> | 2019-02-16 12:47:22 +0100 |
| commit | bd18cc5708328600a94a02444caf27a5fb6ca20c (patch) | |
| tree | 02cc8f3240aa8d961e1f1a5f792f28ddaecb447f /src/librustc_mir/interpret | |
| parent | 235a6b7d065a2fc55ceee323e85b9309b16e84bf (diff) | |
| download | rust-bd18cc5708328600a94a02444caf27a5fb6ca20c.tar.gz rust-bd18cc5708328600a94a02444caf27a5fb6ca20c.zip | |
Remove an intermediate value from discriminant reading
Diffstat (limited to 'src/librustc_mir/interpret')
| -rw-r--r-- | src/librustc_mir/interpret/operand.rs | 2 | ||||
| -rw-r--r-- | src/librustc_mir/interpret/step.rs | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/librustc_mir/interpret/operand.rs b/src/librustc_mir/interpret/operand.rs index 4f34ffc128e..a638c008e76 100644 --- a/src/librustc_mir/interpret/operand.rs +++ b/src/librustc_mir/interpret/operand.rs @@ -508,7 +508,7 @@ impl<'a, 'mir, 'tcx, M: Machine<'a, 'mir, 'tcx>> EvalContext<'a, 'mir, 'tcx, M> // Evaluate a place with the goal of reading from it. This lets us sometimes // avoid allocations. - fn eval_place_to_op( + pub(super) fn eval_place_to_op( &self, mir_place: &mir::Place<'tcx>, layout: Option<TyLayout<'tcx>>, diff --git a/src/librustc_mir/interpret/step.rs b/src/librustc_mir/interpret/step.rs index 97ef2b5fa34..656c13c16d9 100644 --- a/src/librustc_mir/interpret/step.rs +++ b/src/librustc_mir/interpret/step.rs @@ -266,8 +266,8 @@ impl<'a, 'mir, 'tcx, M: Machine<'a, 'mir, 'tcx>> EvalContext<'a, 'mir, 'tcx, M> } Discriminant(ref place) => { - let place = self.eval_place(place)?; - let discr_val = self.read_discriminant(self.place_to_op(place)?)?.0; + let op = self.eval_place_to_op(place, None)?; + let discr_val = self.read_discriminant(op)?.0; let size = dest.layout.size; self.write_scalar(Scalar::from_uint(discr_val, size), dest)?; } |
