On Dec 10, 2009, at 2:57 PM, Mike Stump wrote: > Author: mrs > Date: Thu Dec 10 16:57:48 2009 > New Revision: 91073 > > URL: http://llvm.org/viewvc/llvm-project?rev=91073&view=rev > Log: > Don't complain about falling off the end of a function with an asm > block, if the function is supposed to return a value as we don't know > exactly what the asm code does.
Why? GCC warns about this. A fix to silence the warning is to use __builtin_unreachable() after the asm. -Chris > > Modified: > cfe/trunk/lib/Sema/SemaDecl.cpp > cfe/trunk/test/Sema/return.c > > Modified: cfe/trunk/lib/Sema/SemaDecl.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=91073&r1=91072&r2=91073&view=diff > > ============================================================================== > --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) > +++ cfe/trunk/lib/Sema/SemaDecl.cpp Thu Dec 10 16:57:48 2009 > @@ -1253,6 +1253,11 @@ > HasFakeEdge = true; > continue; > } > + if (isa<AsmStmt>(S)) { > + HasFakeEdge = true; > + HasLiveReturn = true; > + continue; > + } > bool NoReturnEdge = false; > if (CallExpr *C = dyn_cast<CallExpr>(S)) { > Expr *CEE = C->getCallee()->IgnoreParenCasts(); > > Modified: cfe/trunk/test/Sema/return.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/return.c?rev=91073&r1=91072&r2=91073&view=diff > > ============================================================================== > --- cfe/trunk/test/Sema/return.c (original) > +++ cfe/trunk/test/Sema/return.c Thu Dec 10 16:57:48 2009 > @@ -222,3 +222,7 @@ > void test33() { > if (j) while (1) { } > } > + > +int test34() { > + asm("nop"); > +} > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
