@@ -28,6 +28,19 @@ impl<'gcc, 'tcx> CodegenCx<'gcc, 'tcx> {
28
28
global
29
29
// TODO(antoyo): set linkage.
30
30
}
31
+
32
+ pub fn const_bitcast ( & self , value : RValue < ' gcc > , typ : Type < ' gcc > ) -> RValue < ' gcc > {
33
+ if value. get_type ( ) == self . bool_type . make_pointer ( ) {
34
+ if let Some ( pointee) = typ. get_pointee ( ) {
35
+ if pointee. dyncast_vector ( ) . is_some ( ) {
36
+ panic ! ( )
37
+ }
38
+ }
39
+ }
40
+ // NOTE: since bitcast makes a value non-constant, don't bitcast if not necessary as some
41
+ // SIMD builtins require a constant value.
42
+ self . bitcast_if_needed ( value, typ)
43
+ }
31
44
}
32
45
33
46
pub fn bytes_in_context < ' gcc , ' tcx > ( cx : & CodegenCx < ' gcc , ' tcx > , bytes : & [ u8 ] ) -> RValue < ' gcc > {
@@ -235,19 +248,6 @@ impl<'gcc, 'tcx> ConstMethods<'tcx> for CodegenCx<'gcc, 'tcx> {
235
248
const_alloc_to_gcc ( self , alloc)
236
249
}
237
250
238
- fn const_bitcast ( & self , value : RValue < ' gcc > , typ : Type < ' gcc > ) -> RValue < ' gcc > {
239
- if value. get_type ( ) == self . bool_type . make_pointer ( ) {
240
- if let Some ( pointee) = typ. get_pointee ( ) {
241
- if pointee. dyncast_vector ( ) . is_some ( ) {
242
- panic ! ( )
243
- }
244
- }
245
- }
246
- // NOTE: since bitcast makes a value non-constant, don't bitcast if not necessary as some
247
- // SIMD builtins require a constant value.
248
- self . bitcast_if_needed ( value, typ)
249
- }
250
-
251
251
fn const_ptr_byte_offset ( & self , base_addr : Self :: Value , offset : abi:: Size ) -> Self :: Value {
252
252
self . context
253
253
. new_array_access ( None , base_addr, self . const_usize ( offset. bytes ( ) ) )
0 commit comments