@@ -12,8 +12,8 @@ use rustc_span::{source_map::DUMMY_SP, symbol::Symbol};
12
12
use rustc_target:: abi:: VariantIdx ;
13
13
14
14
use crate :: interpret:: {
15
- intern_const_alloc_recursive, ConstValue , Immediate , InternKind , InterpCx , InterpResult ,
16
- MPlaceTy , MemPlaceMeta , Scalar ,
15
+ intern_const_alloc_recursive, ConstValue , InternKind , InterpCx , InterpResult , MPlaceTy ,
16
+ MemPlaceMeta , Scalar ,
17
17
} ;
18
18
19
19
mod error;
@@ -119,44 +119,19 @@ fn const_to_valtree_inner<'tcx>(
119
119
ty:: Ref ( _, inner_ty, _) => {
120
120
match inner_ty. kind ( ) {
121
121
ty:: Slice ( _) | ty:: Str => {
122
- match ecx. try_read_immediate_from_mplace ( & place) {
123
- Ok ( Some ( imm) ) => {
124
- let derefd = ecx. deref_operand ( & place. into ( ) ) . expect ( & format ! ( "couldnt deref {:?}" , imm) ) ;
125
- debug ! ( ?derefd) ;
126
-
127
- let len = match * imm {
128
- Immediate :: ScalarPair ( _, b) => {
129
- let len = b. to_machine_usize ( & ecx. tcx . tcx ) . unwrap ( ) ;
130
- len
131
- }
132
- _ => bug ! ( "expected ScalarPair for &[T] or &str" ) ,
133
- } ;
134
- debug ! ( ?len) ;
135
-
136
- let valtree = slice_branches ( ecx, & derefd, len) ;
137
- debug ! ( ?valtree) ;
138
-
139
- valtree
140
- }
141
- _ => {
142
- None
143
- }
144
- }
122
+ let derefd = ecx. deref_operand ( & place. into ( ) ) . unwrap ( ) ;
123
+ debug ! ( ?derefd) ;
124
+ let len = derefd. len ( & ecx. tcx . tcx ) . unwrap ( ) ;
125
+ let valtree = slice_branches ( ecx, & derefd, len) ;
126
+ debug ! ( ?valtree) ;
127
+
128
+ valtree
145
129
}
146
130
_ => {
147
- let imm = ecx. try_read_immediate_from_mplace ( & place) . unwrap_or_else ( |e| bug ! ( "couldnt read immediate from {:?}, error: {:?}" , place, e) ) ;
148
-
149
- match imm {
150
- Some ( imm) => {
151
- debug ! ( ?imm) ;
152
-
153
- let derefd_place = ecx. deref_operand ( & place. into ( ) ) . unwrap_or_else ( |e| bug ! ( "couldn't deref {:?}, error: {:?}" , place, e) ) ;
154
- debug ! ( ?derefd_place) ;
131
+ let derefd_place = ecx. deref_operand ( & place. into ( ) ) . unwrap_or_else ( |e| bug ! ( "couldn't deref {:?}, error: {:?}" , place, e) ) ;
132
+ debug ! ( ?derefd_place) ;
155
133
156
- const_to_valtree_inner ( ecx, & derefd_place)
157
- }
158
- None => bug ! ( "couldn't read immediate from {:?}" , place) ,
159
- }
134
+ const_to_valtree_inner ( ecx, & derefd_place)
160
135
}
161
136
}
162
137
}
0 commit comments