[PATCH] D79213: [hip] Add noalias on restrict qualified coerced hip pointers
John McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon May 4 19:55:44 PDT 2020
rjmccall added inline comments.
================
Comment at: clang/lib/CodeGen/CGCall.cpp:2556-2563
+ // Restrict qualified HIP pointers that were coerced to global pointers
+ // can be marked with the noalias attribute.
+ if (isCoercedHIPGlobalPointer(*this, getLangOpts(), ArgI, Ty) &&
+ Arg->getType().isRestrictQualified()) {
+ auto AI = cast<llvm::Argument>(FnArgs[FirstIRArg]);
+ AI->addAttr(llvm::Attribute::NoAlias);
+ }
----------------
hliao wrote:
> yaxunl wrote:
> > hliao wrote:
> > > I don't think we need to check pointer address and/or HIP specific. As the generic argument processing, if the original type has any qualifiers, the coerced type (if it has a single value as the original parameter) should have those qualifiers as well. Here, we not only miss `restrict` but also alignment, `nonnull`, and etc. It should be fixed as a generic case instead of a target- or language-specific one.
> > I agree we should migrate other argument properties for promoted pointer-type kernel arg for HIP, and that should be possible since other than the address space change, the type is the same.
> >
> > However, I am not sure if we can do that for coerced function arguments in general. It may not even be pointer any more.
> If the coerced type is still a pointer but diffs on the element type, address space, or others. They should share the same qualifiers for pointers.
If the parameter type is `restrict`-qualified and there's a single IR argument of pointer type, you should be able to apply `NoAlias`, regardless of coercion, in all language modes. You can just hoist that out of the "trivial case" block.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D79213/new/
https://reviews.llvm.org/D79213
More information about the cfe-commits
mailing list