mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-16 17:03:35 +00:00
Remove const_bitcast from ConstMethods
This commit is contained in:
parent
7f445329ec
commit
98e8601ac3
@ -28,6 +28,19 @@ impl<'gcc, 'tcx> CodegenCx<'gcc, 'tcx> {
|
|||||||
global
|
global
|
||||||
// TODO(antoyo): set linkage.
|
// TODO(antoyo): set linkage.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn const_bitcast(&self, value: RValue<'gcc>, typ: Type<'gcc>) -> RValue<'gcc> {
|
||||||
|
if value.get_type() == self.bool_type.make_pointer() {
|
||||||
|
if let Some(pointee) = typ.get_pointee() {
|
||||||
|
if pointee.dyncast_vector().is_some() {
|
||||||
|
panic!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// NOTE: since bitcast makes a value non-constant, don't bitcast if not necessary as some
|
||||||
|
// SIMD builtins require a constant value.
|
||||||
|
self.bitcast_if_needed(value, typ)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn bytes_in_context<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, bytes: &[u8]) -> RValue<'gcc> {
|
pub fn bytes_in_context<'gcc, 'tcx>(cx: &CodegenCx<'gcc, 'tcx>, bytes: &[u8]) -> RValue<'gcc> {
|
||||||
@ -239,19 +252,6 @@ impl<'gcc, 'tcx> ConstMethods<'tcx> for CodegenCx<'gcc, 'tcx> {
|
|||||||
const_alloc_to_gcc(self, alloc)
|
const_alloc_to_gcc(self, alloc)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn const_bitcast(&self, value: RValue<'gcc>, typ: Type<'gcc>) -> RValue<'gcc> {
|
|
||||||
if value.get_type() == self.bool_type.make_pointer() {
|
|
||||||
if let Some(pointee) = typ.get_pointee() {
|
|
||||||
if pointee.dyncast_vector().is_some() {
|
|
||||||
panic!()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// NOTE: since bitcast makes a value non-constant, don't bitcast if not necessary as some
|
|
||||||
// SIMD builtins require a constant value.
|
|
||||||
self.bitcast_if_needed(value, typ)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn const_ptr_byte_offset(&self, base_addr: Self::Value, offset: abi::Size) -> Self::Value {
|
fn const_ptr_byte_offset(&self, base_addr: Self::Value, offset: abi::Size) -> Self::Value {
|
||||||
self.context
|
self.context
|
||||||
.new_array_access(None, base_addr, self.const_usize(offset.bytes()))
|
.new_array_access(None, base_addr, self.const_usize(offset.bytes()))
|
||||||
|
@ -329,10 +329,6 @@ impl<'ll, 'tcx> ConstMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
|||||||
const_alloc_to_llvm(self, alloc, /*static*/ false)
|
const_alloc_to_llvm(self, alloc, /*static*/ false)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn const_bitcast(&self, val: &'ll Value, ty: &'ll Type) -> &'ll Value {
|
|
||||||
self.const_bitcast(val, ty)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn const_ptr_byte_offset(&self, base_addr: Self::Value, offset: abi::Size) -> Self::Value {
|
fn const_ptr_byte_offset(&self, base_addr: Self::Value, offset: abi::Size) -> Self::Value {
|
||||||
unsafe {
|
unsafe {
|
||||||
llvm::LLVMConstInBoundsGEP2(
|
llvm::LLVMConstInBoundsGEP2(
|
||||||
|
@ -37,6 +37,5 @@ pub trait ConstMethods<'tcx>: BackendTypes {
|
|||||||
|
|
||||||
fn scalar_to_backend(&self, cv: Scalar, layout: abi::Scalar, llty: Self::Type) -> Self::Value;
|
fn scalar_to_backend(&self, cv: Scalar, layout: abi::Scalar, llty: Self::Type) -> Self::Value;
|
||||||
|
|
||||||
fn const_bitcast(&self, val: Self::Value, ty: Self::Type) -> Self::Value;
|
|
||||||
fn const_ptr_byte_offset(&self, val: Self::Value, offset: abi::Size) -> Self::Value;
|
fn const_ptr_byte_offset(&self, val: Self::Value, offset: abi::Size) -> Self::Value;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user