[PATCH] D17412: PR19957: [OpenCL] incorrectly accepts implicit address space conversion with ternary operator
Xiuli PAN via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 15 01:44:14 PDT 2016
pxli168 added inline comments.
================
Comment at: lib/AST/ASTContext.cpp:7613
@@ +7612,3 @@
+ if (getLangOpts().OpenCL) {
+ if (LHS.getUnqualifiedType() != RHS.getUnqualifiedType() ||
+ LQuals.getCVRQualifiers() != RQuals.getCVRQualifiers())
----------------
Anastasia wrote:
> Do you think we should check the types here? I was thinking we should do the check exactly as below apart from AS specific part.
I think the mergeType function it very complex, too. It seems to check type can be merged recursively later.
================
Comment at: lib/Sema/SemaExpr.cpp:6168
@@ -6168,3 +6167,3 @@
QualType CompositeTy = S.Context.mergeTypes(lhptee, rhptee);
if (CompositeTy.isNull()) {
----------------
Anastasia wrote:
> Could we instead add a comment explaining different cases with AS we can have here i.e. 1(a-c)&2(a-c)!
>
> And may be we could refer to each case by adding comments in code below.
Good idea.
================
Comment at: lib/Sema/SemaExpr.cpp:6222-6227
@@ -6188,1 +6221,8 @@
+ auto ResultAddrSpace = ResultTy.getQualifiers().getAddressSpace();
+ LHSCastKind = lhQual.getAddressSpace() == ResultAddrSpace
+ ? CK_BitCast
+ : CK_AddressSpaceConversion;
+ RHSCastKind = rhQual.getAddressSpace() == ResultAddrSpace
+ ? CK_BitCast
+ : CK_AddressSpaceConversion;
ResultTy = S.Context.getPointerType(ResultTy);
----------------
Anastasia wrote:
> pxli168 wrote:
> > What will mergetypes return?
> > It seems the LHS and RHS are compatibel here, and may be they did not need bitcast?
> I think we always need a cast here, because types are not exactly the same at this point!
I tried to figure out what mergetypes will return and find it seems to have logic far more complex than this.
Repository:
rL LLVM
http://reviews.llvm.org/D17412
More information about the cfe-commits
mailing list