about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_codegen_llvm/mir/constant.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/librustc_codegen_llvm/mir/constant.rs b/src/librustc_codegen_llvm/mir/constant.rs
index 1fa3fb79e24..ef0bc3ed330 100644
--- a/src/librustc_codegen_llvm/mir/constant.rs
+++ b/src/librustc_codegen_llvm/mir/constant.rs
@@ -70,8 +70,11 @@ pub fn scalar_to_llvm(cx: &CodegenCx,
                 &C_usize(cx, ptr.offset.bytes()),
                 1,
             ) };
-            let llval = unsafe { llvm::LLVMConstPtrToInt(llval, llty.to_ref()) };
-            consts::bitcast(llval, llty)
+            if layout.value != layout::Pointer {
+                unsafe { llvm::LLVMConstPtrToInt(llval, llty.to_ref()) }
+            } else {
+                consts::bitcast(llval, llty)
+            }
         }
     }
 }