@@ -28,6 +28,19 @@ impl<'gcc, 'tcx> CodegenCx<'gcc, 'tcx> {
2828 global
2929 // TODO(antoyo): set linkage.
3030 }
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+ }
3144}
3245
3346pub 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> {
235248 const_alloc_to_gcc ( self , alloc)
236249 }
237250
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-
251251 fn const_ptr_byte_offset ( & self , base_addr : Self :: Value , offset : abi:: Size ) -> Self :: Value {
252252 self . context
253253 . new_array_access ( None , base_addr, self . const_usize ( offset. bytes ( ) ) )
0 commit comments