rjmccall added a comment.

The casts done by emitARCValueOperation will handle the input, but they don't 
quite handle the result properly.  The right test case here is a method named 
"retain" that's declared to return something completely unrelated to its 
receiver type, e.g.

  @class A;
  @interface B
  - (A*) retain;
  @end

You should also add a test case for unusual return types that your mechanism 
just can't support and that need to go through the ordinary message-send 
emission, like returning a float.


================
Comment at: test/CodeGenObjC/convert-messages-to-runtime-calls.m:62
@@ +61,3 @@
+
+// Make sure we can convert a message to a dynamic receiver to a call
+// CHECK-LABEL: define {{.*}}void @retain_self
----------------
You already test this case.  If you make retain_self a class method, this will 
be a class message; but it should still be okay to use objc_retain.


http://reviews.llvm.org/D14737



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

Reply via email to