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