diff options
| author | Oliver Scherer <github35764891676564198441@oli-obk.de> | 2019-08-17 11:29:17 +0200 |
|---|---|---|
| committer | Oliver Scherer <github35764891676564198441@oli-obk.de> | 2019-08-17 11:29:17 +0200 |
| commit | ab949fdd64433749ebb7f8ef516ee2cdfe217a9d (patch) | |
| tree | 79c42247ba385c9cbe3e4aa3015009d99c0c6383 /src | |
| parent | 1fb854a0f5ec500414f7e4fd4eac30357a9dd666 (diff) | |
| download | rust-ab949fdd64433749ebb7f8ef516ee2cdfe217a9d.tar.gz rust-ab949fdd64433749ebb7f8ef516ee2cdfe217a9d.zip | |
Cast only where necessary
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_codegen_llvm/common.rs | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/librustc_codegen_llvm/common.rs b/src/librustc_codegen_llvm/common.rs index a2026e1461d..19f18088579 100644 --- a/src/librustc_codegen_llvm/common.rs +++ b/src/librustc_codegen_llvm/common.rs @@ -333,20 +333,21 @@ impl ConstMethods<'tcx> for CodegenCx<'ll, 'tcx> { offset: Size, ) -> PlaceRef<'tcx, &'ll Value> { assert_eq!(alloc.align, layout.align.abi); + let llty = self.type_ptr_to(layout.llvm_type(self)); let llval = if layout.size == Size::ZERO { let llval = self.const_usize(alloc.align.bytes()); - unsafe { llvm::LLVMConstIntToPtr(llval, self.type_ptr_to(self.type_i8p())) } + unsafe { llvm::LLVMConstIntToPtr(llval, llty) } } else { let init = const_alloc_to_llvm(self, alloc); let base_addr = self.static_addr_of(init, alloc.align, None); - unsafe { llvm::LLVMConstInBoundsGEP( + let llval = unsafe { llvm::LLVMConstInBoundsGEP( self.const_bitcast(base_addr, self.type_i8p()), &self.const_usize(offset.bytes()), 1, - )} + )}; + self.const_bitcast(llval, llty) }; - let llval = self.const_bitcast(llval, self.type_ptr_to(layout.llvm_type(self))); PlaceRef::new_sized(llval, layout, alloc.align) } |
