[clang] [llvm] Adding splitdouble HLSL function (PR #109331)

Justin Bogner via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 9 19:21:12 PDT 2024


================
@@ -4681,6 +4682,14 @@ void CallArg::copyInto(CodeGenFunction &CGF, Address Addr) const {
   IsUsed = true;
 }
 
+void CodeGenFunction::EmitWritebacks(CodeGenFunction &CGF,
+                                     const CallArgList &Args) {
+  if (getTarget().getCXXABI().areArgsDestroyedLeftToRightInCallee())
+    std::reverse_iterator(Args.writebacks().begin());
----------------
bogner wrote:

This looks broken - creating a `reverse_iterator` and not doing anything with it doesn't reverse anything. I think you meant `Args.reverseWritebacks()` here, and we clearly need to exercise this in tests.

That said, the `Args` argument here is const for a reason - I don't think it's appropriate to be modifying the `CallArgList` in a function that just says it's emitting writebacks. Is this really the right place to do this?

Finally, it's a bit of a code smell to have a public member function that just calls out to a `static` function like this. It might be better to remove the `emitWritebacks` function and only have `CodeGenFunction::EmitWritebacks` if we need to access this outside of the file.

https://github.com/llvm/llvm-project/pull/109331


More information about the cfe-commits mailing list