[PATCH] D152321: [clang] Replace use of Type::getPointerTo() (NFC)
Youngsuk Kim via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 14 19:30:45 PDT 2023
JOE1994 added inline comments.
================
Comment at: clang/lib/CodeGen/CGBuilder.h:170
Address CreateElementBitCast(Address Addr, llvm::Type *Ty,
const llvm::Twine &Name = "") {
+ return Address(Addr.getPointer(), Ty,
----------------
barannikov88 wrote:
> The argument can be removed.
>
> Idea for a follow-up: I would also consider removing this method because it does not do what its name says.
> Maybe replace it with `Address::withElementType` analagous to `Address::withPointer` / `Address::withAlignment`?
>
Thank you for the suggestion.
I have a follow-up reivision for removing the `Name` parameter. (https://reviews.llvm.org/D152551)
After this revision gets merged, I can update the follow-up revision to replace `CreateElementBitCast` also.
================
Comment at: clang/lib/CodeGen/CGCUDANV.cpp:238-240
CharPtrTy = llvm::PointerType::getUnqual(Types.ConvertType(Ctx.CharTy));
VoidPtrTy = cast<llvm::PointerType>(Types.ConvertType(Ctx.VoidPtrTy));
+ VoidPtrPtrTy = llvm::PointerType::get(CGM.getLLVMContext(), 0);
----------------
barannikov88 wrote:
> These are all the same types. Replace the variables with single `PtrTy`?
>
Thank you for the suggestion.
Unifying them to a single `PtrTy` adds a lot of diff,
so I think it deserves to be in a separate standalone commit.
(I can create a follow-up revision after this gets merged).
================
Comment at: clang/lib/CodeGen/CGCXX.cpp:175
// Create the alias with no name.
+ llvm::Type *AliasValueType = getTypes().GetFunctionType(AliasDecl);
auto *Alias = llvm::GlobalAlias::create(AliasValueType, 0, Linkage, "",
----------------
barannikov88 wrote:
> This looks wrong. It used to be `GetFunctionType(TargetDecl)`.
>
I've simply moved the line defining `AliasValueType` closer to its use.
I think `AliasValueType` is right to be initialized with `getFunctionType(AliasDecl)`.
Moving the line to below isn't necessary, and it's rather causing confusion.
I'll move it back to where it was.
================
Comment at: clang/lib/CodeGen/CGCXX.cpp:184
if (Entry) {
- assert(Entry->getType() == AliasType &&
+ assert(Entry->getValueType() == AliasValueType &&
+ Entry->getAddressSpace() == Alias->getAddressSpace() &&
----------------
barannikov88 wrote:
> What's the reason for this change?
Since `AliasType` got removed above, the assert condition needs to be updated one way or another.
[The assert was written in 2010 (before opaque pointers)](https://github.com/llvm/llvm-project/commit/aea181de04d8be743db1629e0c054abff68500c6),
and it's checking equality of two pointer types (which was equivalent to checking equality of pointee type & address space).
With opaque pointers enabled, I thought the assert needs to be updated to check equality of both the pointee types & address spaces separately in order to preserve the original intent.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D152321/new/
https://reviews.llvm.org/D152321
More information about the cfe-commits
mailing list