http://codereview.appspot.com/4635075/diff/1/lib/Sema/SemaDeclAttr.cpp File lib/Sema/SemaDeclAttr.cpp (right): http://codereview.appspot.com/4635075/diff/1/lib/Sema/SemaDeclAttr.cpp#newcod... lib/Sema/SemaDeclAttr.cpp:197: static inline bool wrongNumArgs(const AttributeList &Attr, no need for 'inline' here. http://codereview.appspot.com/4635075/diff/1/lib/Sema/SemaDeclAttr.cpp#newcod... lib/Sema/SemaDeclAttr.cpp:198: Sema &S, int num) { indent seems wildly off. You can probably just fold this into a single line. Also, as convention, static helper functions which accept a Sema reference do so as their first argument. http://codereview.appspot.com/4635075/diff/1/lib/Sema/SemaDeclAttr.cpp#newcod... lib/Sema/SemaDeclAttr.cpp:199: if (Attr.getNumArgs() != num){ always keep a space before the {. http://codereview.appspot.com/4635075/diff/1/lib/Sema/SemaDeclAttr.cpp#newcod... lib/Sema/SemaDeclAttr.cpp:201: return true; Returning true for an error is really confusing. lets return false here, true below, and rename the function to 'checkNumArgs'. http://codereview.appspot.com/4635075/diff/1/lib/Sema/SemaDeclAttr.cpp#newcod... lib/Sema/SemaDeclAttr.cpp:811: assert(!Attr.isInvalid()); Send this in a separate patch? http://codereview.appspot.com/4635075/diff/1/lib/Sema/SemaDeclAttr.cpp#newcod... lib/Sema/SemaDeclAttr.cpp:1244: Why the blank line? http://codereview.appspot.com/4635075/diff/1/lib/Sema/SemaDeclAttr.cpp#newcod... lib/Sema/SemaDeclAttr.cpp:1249: Again, why touch this in this patch?