rjmccall added inline comments.

================
Comment at: lib/CodeGen/CGCall.cpp:3505
+    if (AS != LangAS::Default && AS != LangAS::opencl_private &&
+        AS != CGM.getASTAllocaAddressSpace())
+      Flag = CallArg::ByValArgNeedsCopy;
----------------
This is an odd condition.  What are you really trying to express here?  
Something about the IR address space that the AST address space maps to?

The condition `AS != LangAS::Default` kills the optimization for all practical 
purposes, by the way, so something does need to change here.

I will note that if CallArg could take an LValue, neither this nor the 
alignment check would be required here; they'd just be done by the 
call-emission code.


================
Comment at: lib/CodeGen/CGCall.cpp:3511
+                   static_cast<unsigned>(CallArg::NonByValArgNeedsCopy) |
+                   static_cast<unsigned>(Flag)));
     } else {
----------------
Please just add an `operator|` for CallArg::Flag.


================
Comment at: lib/CodeGen/CGCall.h:216
   struct CallArg {
+    enum Flag {
+      Default = 0x0,
----------------
I thing `Flags` would be a better name.


https://reviews.llvm.org/D34367



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

Reply via email to