[cfe-commits] r94788 - in /cfe/trunk: lib/Frontend/RewriteObjC.cpp test/Rewriter/rewrite-byref-vars.mm
Fariborz Jahanian
fjahanian at apple.com
Thu Jan 28 17:55:49 PST 2010
Author: fjahanian
Date: Thu Jan 28 19:55:49 2010
New Revision: 94788
URL: http://llvm.org/viewvc/llvm-project?rev=94788&view=rev
Log:
Fixes rewriter bug rewriting byref related API where a struct
definition comes after where it is needed. Fixes radar 7589385.
Modified:
cfe/trunk/lib/Frontend/RewriteObjC.cpp
cfe/trunk/test/Rewriter/rewrite-byref-vars.mm
Modified: cfe/trunk/lib/Frontend/RewriteObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/RewriteObjC.cpp?rev=94788&r1=94787&r2=94788&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/RewriteObjC.cpp (original)
+++ cfe/trunk/lib/Frontend/RewriteObjC.cpp Thu Jan 28 19:55:49 2010
@@ -4085,8 +4085,7 @@
void RewriteObjC::InsertBlockLiteralsWithinMethod(ObjCMethodDecl *MD) {
//fprintf(stderr,"In InsertBlockLiteralsWitinMethod\n");
//SourceLocation FunLocStart = MD->getLocStart();
- // FIXME: This hack works around a bug in Rewrite.InsertText().
- SourceLocation FunLocStart = MD->getLocStart().getFileLocWithOffset(-1);
+ SourceLocation FunLocStart = MD->getLocStart();
std::string FuncName = MD->getSelector().getAsString();
// Convert colons to underscores.
std::string::size_type loc = 0;
Modified: cfe/trunk/test/Rewriter/rewrite-byref-vars.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Rewriter/rewrite-byref-vars.mm?rev=94788&r1=94787&r2=94788&view=diff
==============================================================================
--- cfe/trunk/test/Rewriter/rewrite-byref-vars.mm (original)
+++ cfe/trunk/test/Rewriter/rewrite-byref-vars.mm Thu Jan 28 19:55:49 2010
@@ -36,9 +36,19 @@
id list;
}
- (void) Meth;
+// radar 7589385 use before definition
+- (void) allObjects;
@end
@implementation I
+// radar 7589385 use before definition
+- (void) allObjects {
+ __attribute__((__blocks__(byref))) id *listp;
+
+ ^(void) {
+ *listp++ = 0;
+ };
+}
- (void) Meth { __attribute__((__blocks__(byref))) void ** listp = (void **)list; }
@end
More information about the cfe-commits
mailing list