@@ -96,40 +96,40 @@ pub struct ImmTy<'tcx, Tag = ()> {
96
96
impl < Tag : Copy > std:: fmt:: Display for ImmTy < ' tcx , Tag > {
97
97
fn fmt ( & self , fmt : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
98
98
match & self . imm {
99
- Immediate :: Scalar ( ScalarMaybeUndef :: Scalar ( s) ) => match s. to_bits ( self . layout . size ) {
100
- Ok ( s) => {
101
- match self . layout . ty . kind {
102
- ty:: Int ( _) => {
103
- return write ! (
104
- fmt,
105
- "{}" ,
106
- super :: sign_extend( s, self . layout. size) as i128 ,
107
- ) ;
108
- }
109
- ty:: Uint ( _) => return write ! ( fmt, "{}" , s) ,
110
- ty:: Bool if s == 0 => return fmt. write_str ( "false" ) ,
111
- ty:: Bool if s == 1 => return fmt. write_str ( "true" ) ,
112
- ty:: Char => {
113
- if let Some ( c) = u32:: try_from ( s) . ok ( ) . and_then ( std:: char:: from_u32) {
114
- return write ! ( fmt, "{}" , c) ;
115
- }
99
+ // We cannot use `to_bits_or_ptr` as we do not have a `tcx`.
100
+ // So we use `is_bits` and circumvent a bunch of sanity checking -- but
101
+ // this is anyway only for printing.
102
+ Immediate :: Scalar ( ScalarMaybeUndef :: Scalar ( s) ) if s. is_ptr ( ) => {
103
+ fmt. write_str ( "{pointer}" )
104
+ }
105
+ Immediate :: Scalar ( ScalarMaybeUndef :: Scalar ( s) ) => {
106
+ let s = s. assert_bits ( self . layout . size ) ;
107
+ match self . layout . ty . kind {
108
+ ty:: Int ( _) => {
109
+ return write ! ( fmt, "{}" , super :: sign_extend( s, self . layout. size) as i128 , ) ;
110
+ }
111
+ ty:: Uint ( _) => return write ! ( fmt, "{}" , s) ,
112
+ ty:: Bool if s == 0 => return fmt. write_str ( "false" ) ,
113
+ ty:: Bool if s == 1 => return fmt. write_str ( "true" ) ,
114
+ ty:: Char => {
115
+ if let Some ( c) = u32:: try_from ( s) . ok ( ) . and_then ( std:: char:: from_u32) {
116
+ return write ! ( fmt, "{}" , c) ;
116
117
}
117
- ty :: Float ( ast :: FloatTy :: F32 ) => {
118
- if let Ok ( u ) = u32 :: try_from ( s ) {
119
- return write ! ( fmt , "{}" , f32 :: from_bits ( u ) ) ;
120
- }
118
+ }
119
+ ty :: Float ( ast :: FloatTy :: F32 ) => {
120
+ if let Ok ( u ) = u32 :: try_from ( s ) {
121
+ return write ! ( fmt , "{}" , f32 :: from_bits ( u ) ) ;
121
122
}
122
- ty :: Float ( ast :: FloatTy :: F64 ) => {
123
- if let Ok ( u ) = u64 :: try_from ( s ) {
124
- return write ! ( fmt , "{}" , f64 :: from_bits ( u ) ) ;
125
- }
123
+ }
124
+ ty :: Float ( ast :: FloatTy :: F64 ) => {
125
+ if let Ok ( u ) = u64 :: try_from ( s ) {
126
+ return write ! ( fmt , "{}" , f64 :: from_bits ( u ) ) ;
126
127
}
127
- _ => { }
128
128
}
129
- write ! ( fmt , "{:x}" , s )
129
+ _ => { }
130
130
}
131
- Err ( _ ) => fmt. write_str ( "{pointer}" ) ,
132
- } ,
131
+ write ! ( fmt, "{:x}" , s )
132
+ }
133
133
Immediate :: Scalar ( ScalarMaybeUndef :: Undef ) => fmt. write_str ( "{undef}" ) ,
134
134
Immediate :: ScalarPair ( ..) => fmt. write_str ( "{wide pointer or tuple}" ) ,
135
135
}
@@ -205,11 +205,6 @@ impl<'tcx, Tag: Copy> ImmTy<'tcx, Tag> {
205
205
pub fn from_int ( i : impl Into < i128 > , layout : TyLayout < ' tcx > ) -> Self {
206
206
Self :: from_scalar ( Scalar :: from_int ( i, layout. size ) , layout)
207
207
}
208
-
209
- #[ inline]
210
- pub fn to_bits ( self ) -> InterpResult < ' tcx , u128 > {
211
- self . to_scalar ( ) ?. to_bits ( self . layout . size )
212
- }
213
208
}
214
209
215
210
// Use the existing layout if given (but sanity check in debug mode),
0 commit comments