yaxunl marked 7 inline comments as done. yaxunl added inline comments.
================ Comment at: lib/CodeGen/CGExprScalar.cpp:1532 + return llvm::ConstantInt::get(ConvertType(DestTy), + CGF.getContext().getTargetNullPtrValue(E->getType())); assert(!DestTy->isBooleanType() && "bool should use PointerToBool"); ---------------- rjmccall wrote: > Why is this necessary? ptrtoint on the recursively-emitted null pointer > should do this automatically. Since the target knows the value in the null pointers, it can fold a null pointer to integer literal directly. The above code does that, e.g. ``` void test_cast_null_pointer_to_sizet_calee(size_t arg_private, size_t arg_local, size_t arg_global, size_t arg_constant, size_t arg_generic); // CHECK-LABEL: test_cast_null_pointer_to_sizet // CHECK: call void @test_cast_null_pointer_to_sizet_calee(i64 -1, i64 -1, i64 0, i64 0, i64 0) void test_cast_null_pointer_to_sizet(void) { test_cast_null_pointer_to_sizet_calee((size_t)((private char*)0), (size_t)((local char*)0), (size_t)((global char*)0), (size_t)((constant char*)0), (size_t)((generic char*)0)); } ``` Without the above code, we only get ptrtoint instructions. https://reviews.llvm.org/D26196 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits