about summary refs log tree commit diff
path: root/src/librustc_data_structures/bitvec.rs
diff options
context:
space:
mode:
authorSimonas Kazlauskas <git@kazlauskas.me>2016-01-21 18:57:43 +0200
committerSimonas Kazlauskas <git@kazlauskas.me>2016-01-21 19:01:43 +0200
commite74aa2bdff5420458f7dddce070e8a00a6dfdfe8 (patch)
tree2d14596032ad03f4e2ce6ae90cad386d190ca38b /src/librustc_data_structures/bitvec.rs
parentc4c9628de7d4e970b2cb43d0f1a4c8f9ad03aca1 (diff)
downloadrust-e74aa2bdff5420458f7dddce070e8a00a6dfdfe8.tar.gz
rust-e74aa2bdff5420458f7dddce070e8a00a6dfdfe8.zip
[MIR] Promote temps to alloca on multi-assignment
Fixes #31002
Diffstat (limited to 'src/librustc_data_structures/bitvec.rs')
-rw-r--r--src/librustc_data_structures/bitvec.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/librustc_data_structures/bitvec.rs b/src/librustc_data_structures/bitvec.rs
index f26307fd8c5..70f50b4c042 100644
--- a/src/librustc_data_structures/bitvec.rs
+++ b/src/librustc_data_structures/bitvec.rs
@@ -24,12 +24,14 @@ impl BitVector {
         (self.data[word] & mask) != 0
     }
 
+    /// Returns true if the bit has changed.
     pub fn insert(&mut self, bit: usize) -> bool {
         let (word, mask) = word_mask(bit);
         let data = &mut self.data[word];
         let value = *data;
-        *data = value | mask;
-        (value | mask) != value
+        let new_value = value | mask;
+        *data = new_value;
+        new_value != value
     }
 
     pub fn insert_all(&mut self, all: &BitVector) -> bool {