tbaeder added inline comments.

================
Comment at: clang/lib/AST/ExprConstant.cpp:12951-12954
+      // ObjC's @encode()
+      if (isa<ObjCEncodeExpr>(E->getLHS()->IgnoreParenImpCasts()) ||
+          isa<ObjCEncodeExpr>(E->getRHS()->IgnoreParenImpCasts()))
         return Error(E);
----------------
tahonermann wrote:
> A comment to explain this change would be helpful. It isn't intuitive (for me 
> anyway) why Objective-C's `@encode` would require special handling here. Was 
> this needed to avoid a test failure?
In `../clang/test/CodeGenObjC/encode-test-4.m`:

```
int a(void) {
  return @encode(int) == @encode(int) &&
    @encode(Color) == @encode(long) &&
    @encode(PrintColor) == @encode(int);
}
```

The comparisons need to be rejected here and are folded to a `1` later on, it 
seems. Letting the comparison happen will lead to a `0`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D137826/new/

https://reviews.llvm.org/D137826

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to