erichkeane added a comment.

Explanations make sense to me, I'm generally in favor with the 1 concern.



================
Comment at: clang/lib/CodeGen/CodeGenModule.cpp:397
 
+    bool IsIFunc = isa<llvm::GlobalIFunc>(Alias);
     llvm::Constant *Aliasee =
----------------
ibookstein wrote:
> erichkeane wrote:
> > What is the purpose of changing this from checking the declaration to the 
> > IR?  It seems that this is something we should be able to catch at the AST 
> > level and not have to revert to IR checks like this.
> Inside `checkAliasedGlobal` I wanted to save on a parameter (`D`) since then 
> I would just be passing it redundantly because the information is already 
> available on the `Alias`. Here I wanted the check to be an exact copy of the 
> check inside `checkAliasedGlobal` for consistency. I don't mind changing that 
> at at all, I guess I just don't see why I should prefer one over the other :)
The CFE (particularly when doing checks, but even when generating code) should 
be doing as much based on the AST rather than the IR, as it makes us a bit more 
fragile/dependent on the form of the IR. So typcially we try to avoid 
determining types/etc from IR.

Note we break this rule a bunch, but it is currently burning us on opaque-ptr 
for example.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D112868

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

Reply via email to