aboutsummaryrefslogtreecommitdiff
path: root/test/Sema
AgeCommit message (Collapse)Author
2012-07-30Comment parser: don't crash on a completely empty \param followed by a blockDmitri Gribenko
command git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160975 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-30Make -Wformat check the argument type for %n.Hans Wennborg
This makes Clang check that the corresponding argument for "%n" in a format string is a pointer to int. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160966 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-27Make -Wformat walk the typedef chain when looking for size_t, etc.Hans Wennborg
Clang's -Wformat fix-its currently suggest using "%zu" for values of type size_t (in C99 or C++11 mode). However, for a type such as std::vector<T>::size_type, it does not notice that type is actually typedeffed to size_t, and instead suggests a format for the underlying type, such as "%lu" or "%u". This commit makes the format string fix mechanism walk the typedef chain so that it notices if the type is size_t, even if that isn't "at the top". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160886 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-25Turn -Wobjc-root-class on by default. <rdar://problem/11203649>.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160707 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-24Comment parsing tests: fix testDmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160700 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-24Add __has_feature(attribute_availability_with_message).Jordan Rose
This tests for the ability to include a "message" field in availability attributes, like so: extern void ATSFontGetName(const char *oName) __attribute__((availability(macosx,introduced=8.0,deprecated=9.0, message="use CTFontCopyFullName"))); This was actually supported in Clang 3.1, but we got a request for a __has_feature so that header files can use this more safely. It's unfortunate that the 3.1 release doesn't include this, however. <rdar://problem/11886458> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160699 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-24Comment diagnostics tests: add a function with zero arguments, for completeness.Dmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160697 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-24Comment diagnostics: add warning for multiple \param commands with duplicateDmitri Gribenko
parameter names. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160696 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-24When a && or || appears as the condition of a ?:, perform appropriateRichard Smith
short-circuiting when building the CFG. Also be sure to skip parens before checking for the && / || special cases. Finally, fix some crashes in CFG printing in the presence of calls to destructors for array of array of class type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160691 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-24Emit debug info for dynamic initializers. Permit __attribute__((nodebug)) onNick Lewycky
variables that have static storage duration, it removes debug info on the emitted initializer function but not all debug info about this variable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160659 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-23Fix a typo (the the => the)Sylvestre Ledru
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160622 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-20Fix PR13411: Comment parsing: failed assertion on unterminated verbatim block.Dmitri Gribenko
The assertion was wrong in case we have a verbatim block without a closing command. Also add tests for closing command name in a verbatim block, since now it can be empty in such cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160568 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-19Fix ParagraphComment::isWhitespace(): a paragraph without a non-whitespaceDmitri Gribenko
TextComment node was considered whitespace even if it contained other child nodes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160474 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-17Don't treat overflow in floating-point conversions as a hard error in ↵Eli Friedman
constant evaluation. <rdar://problem/11874571>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160394 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-17Issue warning when assigning out-of-range integer values to enums.Fariborz Jahanian
Due to performance cost, this is an opt-in option placed under -Wassign-enum. // rdar://11824807 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160382 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-17Uninitialized variables: two little changes:Richard Smith
* Treat compound assignment as a use, at Jordy's request. * Always add compound assignments into the CFG, so we can correctly diagnose the use in 'return x += 1;' git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160334 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-17-Wuninitialized: Split the classification of DeclRefExprs as initialization orRichard Smith
use out of TransferFunctions, and compute it in advance rather than on-the-fly. This allows us to handle compound assignments with DeclRefExprs on the RHS correctly, and also makes it trivial to treat const& function parameters as not initializing the argument. The patch also makes both of those changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160330 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-15Without this patch clang warns onRafael Espindola
struct __attribute__((visibility("hidden"))) zed { }; struct __attribute__((visibility("hidden"))) zed; Which is a bit silly and got a lot noisier now that we correctly handle visibility pragmas. This patch fixes that and also has some extra quality improvements: * We now produce an error instead of a warning for struct __attribute__((visibility("hidden"))) zed { }; struct __attribute__((visibility("default"))) zed; * The "after definition" warning now points to the new attribute that is ignored instead of pointing to the declaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160227 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-14Refine CFG so that '&&' and '||' don't lead to extra confluence points when ↵Ted Kremenek
used in a branch, but instead push the terminator for the branch down into the basic blocks of the subexpressions of '&&' and '||' respectively. This eliminates some artifical control-flow from the CFG and results in a more compact CFG. Note that this patch only alters the branches 'while', 'if' and 'for'. This was complex enough for one patch. The remaining branches (e.g., do...while) can be handled in a separate patch, but they weren't immediately tackled because they were less important. It is possible that this patch introduces some subtle bugs, particularly w.r.t. to destructor placement. I've tried to audit these changes, but it is also known that the destructor logic needs some refinement in the area of '||' and '&&' regardless (i.e., their are known bugs). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160218 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-13Attaching comments to declarations during parsing: handle more Objective-C ↵Dmitri Gribenko
declarations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160156 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-13Comment parsing: repaint the bikesched: rename 'HTML open tags' to 'HTML ↵Dmitri Gribenko
start tags' and 'HTML close tags' to 'HTML end tags' according to HTML spec. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160153 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-12Make concepts of optional and forbidden end tags separate. Thanks Jordan ↵Dmitri Gribenko
for pointing this! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160149 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-11Enable comment parsing and semantic analysis to emit diagnostics. A fewDmitri Gribenko
diagnostics implemented -- see testcases. I created a new TableGen file for comment diagnostics, DiagnosticCommentKinds.td, because comment diagnostics don't logically fit into AST diagnostics file. But I don't feel strongly about it. This also implements support for self-closing HTML tags in comment lexer and parser (for example, <br />). In order to issue precise diagnostics CommentSema needs to know the declaration the comment is attached to. There is no easy way to find a decl by comment, so we match comments and decls in lockstep: after parsing one declgroup we check if we have any new, not yet attached comments. If we do -- then we do the usual comment-finding process. It is interesting that this automatically handles trailing comments. We pick up not only comments that precede the declaration, but also comments that *follow* the declaration -- thanks to the lookahead in the lexer: after parsing the declgroup we've consumed the semicolon and looked ahead through comments. Added -Wdocumentation-html flag for semantic HTML errors to allow the user to disable only HTML warnings (but not HTML parse errors, which we emit as warnings in -Wdocumentation). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160078 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-03Rename -Wself-assign-memvar to -Wself-assign-field to improve local ↵Nico Weber
consistency a bit. (cf -Wunused-private-field and several other existing -field diagnostics.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159633 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-02-Wuninitialized: assume that an __attribute__((returns_twice)) function mightRichard Smith
initialize any variable. This is extremely conservative, but is sufficient for now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159620 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-30Add support for the C11 _Alignof keyword.Jordan Rose
This behaves like the existing GNU __alignof and C++11 alignof keywords; most of the patch is simply adding the third token spelling to various places. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159494 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Warn on self-assignment to member variables. PR13104.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159394 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-25Give L__FUNCTION__ the right type in templates. PR13206.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159171 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-25Add tests that I wrote for r159060 but forgot to `svn add`.Nico Weber
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159170 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-23Add triple to test/Sema/attr-tls_model.cHans Wennborg
Not all targets support __thread variables. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159080 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-23Support the tls_model attribute (PR9788)Hans Wennborg
This adds support for the tls_model attribute. This allows the user to choose a TLS model that is better than what LLVM would select by default. For example, a variable might be declared as: __thread int x __attribute__((tls_model("initial-exec"))); if it will not be used in a shared library that is dlopen'ed. This depends on LLVM r159077. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159078 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-22Mark Doxygen warnings DefaultIgnore.Dmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159026 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-22Add a warning about almost-Doxygen trailing comments: //< and /*< ... */Dmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159001 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-21Don't warn for -Wstatic-in-inline if the used function is also inline.Jordan Rose
Also, don't warn if the used function is __attribute__((const)), in which case it's not supposed to use global variables anyway. The inline-in-inline thing is a heuristic, and one that's possibly incorrect fairly often because the function being inlined could definitely use global variables. However, even some C standard library functions are written using other (trivial) static-inline functions in the headers, and we definitely don't want to be warning on that (or on anything that /uses/ these trivial inline functions). So we're using "inlined" as a marker for "fairly trivial". (Note that __attribute__((pure)) does /not/ guarantee safety like ((const), because ((const)) does not guarantee that global variables are not being used, and the warning is about globals not being shared across TUs.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158898 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Reword -Winternal-linkage-in-inline, and rename it to -Wstatic-in-inline.Jordan Rose
Now that this is a C-only warning, we can use "static" instead of "internal linkage", which is a term developers are probably more familiar with. This makes for a better warning message. The warning name was changed to match, since "internal linkage" is not mentioned in the warning text anymore. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158853 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Reapplying the changes from r158717 as they were rolled back to avoid merge ↵Aaron Ballman
conflicts from a separate problematic patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158750 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Revert r158700 and dependent patches r158716, r158717, and r158731.Jakob Stoklund Olesen
The original r158700 caused crashes in the gcc test suite, g++.abi/vtable3a.C among others. It also caused failures in the libc++ test suite. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158749 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Improves parsing and semantic analysis for MS __declspec attributes. This ↵Aaron Ballman
includes support for the align (which fixes PR12631). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158717 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-18Change -Winternal-linkage-in-inline from ExtWarn to Warning in C++.Jordan Rose
Per post-commit review, it's not appropriate to use ExtWarn in C++, because we can't prove that the inline function will actually be defined in more than one place (and thus we can't prove that this violates the ODR). This removes the warning entirely from uses in the main source file in C++. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158689 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-18Support -Winternal-linkage-in-inline in C++ code.Jordan Rose
This includes treating anonymous namespaces like internal linkage, and allowing const variables to be used even if internal. The whole thing's been broken out into a separate function to avoid nested ifs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158683 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-18Allow internal decls in inline functions if the function is in the main file.Jordan Rose
This handles the very common case of people writing inline functions in their main source files and not tagging them as inline. These cases should still behave as the user intended. (The diagnostic is still emitted as an extension.) I'm reworking this code anyway to account for C++'s equivalent restriction in [basic.def.odr]p6, but this should get some bots back to green. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158666 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-18fix PR13071 / rdar://problem/11634669 :Nuno Lopes
crash on invalid function decl with alloc_size attribute git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158663 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-18alloc_size attribute: there's nothing wrong with alloc_size(1,1). It just ↵Nuno Lopes
means the function allocates x^2 bytes. GCC also accepts this syntax git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158662 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-17Don't warn about address-to-member used as part of initialisation, ifJoerg Sonnenberger
the member expression is in parentheses. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158651 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-16-Wuninitialized bugfix: when entering the scope of a variable with noRichard Smith
initializer, it is uninitialized, even if we may be coming from somewhere where it was initialized. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158611 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-15Warn when a static variable is referenced in a non-static inline function.Jordan Rose
This is explicitly forbidden in C99 6.7.4p3. This is /not/ forbidden in C++, probably because by default file-scope const/constexpr variables have internal linkage, while functions have external linkage. There's also the issue of anonymous namespaces to consider. Nevertheless, there should probably be a similar warning, since the semantics of inlining a function that references a variable with internal linkage do not seem well-defined. <rdar://problem/11577619> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158531 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-06Add pedantic warning -Wempty-translation-unit (C11 6.9p1).Jordan Rose
In standard C since C89, a 'translation-unit' is syntactically defined to have at least one "external-declaration", which is either a decl or a function definition. In Clang the latter gives us a declaration as well. The tricky bit about this warning is that our predefines can contain external declarations (__builtin_va_list and the 128-bit integer types). Therefore our AST parser now makes sure we have at least one declaration that doesn't come from the predefines buffer. Also, remove bogus warning about empty source files. This doesn't catch source files that only contain comments, and never fired anyway because of our predefines. PR12665 and <rdar://problem/9165548> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158085 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-04Teach printf/scanf about enums with fixed underlying types.Jordan Rose
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157961 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-04Test the '__thread' before 'static' warning.Hans Wennborg
Also fix the '__thread' before 'extern' case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157921 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-30Add new -Wunique-enum which will warn on enums which all elements have theRichard Trieu
same value and were initialized with literals. Clang will warn on code like this: enum A { FIRST = 1, SECOND = 1 }; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157666 91177308-0d34-0410-b5e6-96231b3b80d8