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
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits