aboutsummaryrefslogtreecommitdiff
path: root/test/Misc
AgeCommit message (Collapse)Author
2012-07-06Implement -Wpedantic and --no-pedantic to complement -Weverything.Ted Kremenek
This patch introduces some magic in tablegen to create a "Pedantic" diagnostic group which automagically includes all warnings that are extensions. This allows a user to suppress specific warnings traditionally under -pedantic used an ordinary warning flag. This also allows users to use #pragma to silence specific -pedantic warnings, or promote them to errors, within blocks of text (just like any other warning). -Wpedantic is NOT an alias for -pedantic. Instead, it provides another way to (a) activate -pedantic warnings and (b) disable them. Where they differ is that -pedantic changes the behavior of the preprocessor slightly, whereas -Wpedantic does not (it just turns on the warnings). The magic in the tablegen diagnostic emitter has to do with computing the minimal set of diagnostic groups and diagnostics that should go into -Wpedantic, as those diagnostics that already members of groups that themselves are (transitively) members of -Wpedantic do not need to be included in the Pedantic group directly. I went back and forth on whether or not to magically generate this group, and the invariant was that we always wanted extension warnings to be included in -Wpedantic "some how", but the bookkeeping would be very onerous to manage by hand. -no-pedantic (and --no-pedantic) is included for completeness, and matches many of the same kind of flags the compiler already supports. It does what it says: cancels out -pedantic. One discrepancy is that if one specifies --no-pedantic and -Weverything or -Wpedantic the pedantic warnings are still enabled (essentially the -W flags win). We can debate the correct behavior here. Along the way, this patch nukes some code in TextDiagnosticPrinter.cpp and CXStoredDiagnostic.cpp that determine whether to include the "-pedantic" flag in the warning output. This is no longer needed, as all extensions now have a -W flag. This patch also significantly reduces the number of warnings not under flags from 229 to 158 (all extension warnings). That's a 31% reduction. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159875 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-02Add a warning flag for "'extern' variable has an initializer".Matt Beaumont-Gay
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159600 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29Fix typos from r159463 and update tests. Added Matt Beaumont-Gay's suggestionRichard Trieu
to improve wording of a diagnostic message. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159473 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29Update the %diff modifer to have an alternate string print when a template treeRichard Trieu
is selected. This will allow more flexibility when converting diagnostics to use template type diffing. Also updated the internal manual and test cases for correctly keeping the bold attribute and for tree printing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159463 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-29clang/test/Misc/diag-template-diffing-color.cpp: Remove XFAIL:cygwin. Cygwin ↵NAKAMURA Takumi
has some terminal emulation of escape sequences. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159428 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Fix template type diffing coloring (r159216) when forcing color output to a ↵David Blaikie
file (not a terminal) Reviewed (over the shoulder) by Richard Trieu. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159381 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Only print a semicolon after "no known conversion for Nth argument" if thereMatt Beaumont-Gay
is a following clause. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159369 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-28Add warning flag -Winvalid-pp-token for preprocessing-tokens which haveRichard Smith
undefined behaviour, and move the diagnostic for '' from an Error into an ExtWarn in this group. This is important for some users of the preprocessor, and is necessary for gcc compatibility. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159335 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-26Add template type diffing to Clang. This feature will provide a betterRichard Trieu
comparison between two templated types when they both appear in a diagnostic. Type elision will remove indentical template arguments, which can be disabled with -fno-elide-type. Cyan highlighting is applied to the differing types. For more formatting, -fdiagnostic-show-template-tree will output the template type as an indented text tree, with differences appearing inline. Template tree works with or without type elision. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159216 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-26objc: adds diagnostic group to several old objc warnings.Fariborz Jahanian
// rdar://11741435 pr13184 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159213 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-24[diagtool] Add a new "tree" command to shows warnings activated by a flag.Jordan Rose
% diagtool tree -Wunused-value -Wunused-value -Wunused-comparison warn_unused_comparison -Wunused-result warn_unused_result warn_unused_call warn_unused_container_subscript_expr warn_unused_expr warn_unused_property_expr warn_unused_voidptr git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159093 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-22Minor improvements to some C99 variadic-macro-related diagnostics.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159054 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-22[diagtool] Write to llvm::outs() by default instead of llvm::errs()Jordan Rose
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158954 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-19Improve the error message when a function overload candidate is rejectedKaelyn Uhrain
because it expects a reference and receives a non-l-value. For example, given: int foo(int &); template<int x> void b() { foo(x); } clang will now print "expects an l-value for 1st argument" instead of "no known conversion from 'int' to 'int &' for 1st argument". The change in wording (and associated code to detect the case) was prompted by comment #5 in PR3104, and should be the last bit of work needed for the bug. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158691 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-13Add triples to keep make test work on Windows, where wchar_t is only 16Richard Trieu
bits wide. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158425 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-13Remove unnecessary output redirection in a test.Richard Trieu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158424 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-13Moved the StringLiteral printing code from StmtPrinter into the StringLiteralRichard Trieu
class and have StmtPrinter and StmtDumper refer to it. This fixes an assertion failure when dumping wchar string literals. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158417 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-08Disable _Pragma during HTML macro rewriting to keep from crashing.Jordan Rose
The preprocessor's handling of diagnostic push/pops is stateful, so encountering pragmas during a re-parse causes problems. HTMLRewrite already filters out normal # directives including #pragma, so it's clear it's not expected to be interpreting pragmas in this mode. This fix adds a flag to Preprocessor to explicitly disable pragmas. The "right" fix might be to separate pragma lexing from pragma parsing so that we can throw away pragmas like we do preprocessor directives, but right now it's important to get the fix in. Note that this has nothing to do with the "hack" of re-using the input preprocessor in HTMLRewrite. Even if we someday copy the preprocessor instead of re-using it, the copy would (and should) include the diagnostic level tables and have the same problems. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158214 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-04[diagtool] Re-add show-enabled, minimizing the code pulled in from Frontend.Jordan Rose
Now correctly builds with both GNU make and CMake. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157932 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-03Improve fixit for comparison operator on lhs of bitwise operator.Nico Weber
Before: test.cc:2:18: note: place parentheses around the == expression to silence this warning if (0 == flags & 0xdd) ^ ( ) Now: test.cc:2:18: note: place parentheses around the == expression to silence this warning if (0 == flags & 0xdd) ^ ( ) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157897 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-01[diagtool] Pull show-enabled back out for now.Jordan Rose
Need to figure out how to get Frontend's warning parsing without bringing in all of Frontend. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157847 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-01[diagtool] Add 'show-enabled', which displays which warnings are enabled.Jordan Rose
show-enabled uses the command line you give it to build a CompilerInstance, so any flags you pass will be processed as if running clang proper. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157842 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-16Move the warnings for extra semi-colons under -Wextra-semi. Also, addedRichard Trieu
a warning for an extra semi-colon after function definitions. Added logic so that a block of semi-colons on a line will only get one warning instead of a warning for each semi-colon. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156934 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-10Fix an assertion hit when the serialized diagnostics writer receive a diagnosticArgyrios Kyrtzidis
from the frontend when the location is invalid and the SourceManager null. Instead of keeping the SourceManager object in DiagnosticRenderer, propagate it to the calls accordingly (as reference when it is expected to not be null, or pointer when it may be null). This effectively makes DiagnosticRenderer not tied to a specific SourceManager, removing a hack from TextDiagnosticPrinter. rdar://11386874 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156536 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-06Put the availability warnings in a group.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156261 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-01Place several uncovered warnings under warning flags, and tweak diagnostic ↵Ted Kremenek
output including the term "gc" (in lowercase). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155892 91177308-0d34-0410-b5e6-96231b3b80d8
2012-05-01Move warn_cxx0x_right_shift_in_template_arg to CXX11Compat group, fromDouglas Gregor
Dmitri Gribenko! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155872 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-26Revert r154981, because it caused PR12674.Nico Weber
Add a test for PR12674. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155666 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-18fix display of source lines with null charactersSeth Cantrell
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154981 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-18Nicer display of unprintable source, and fix caret display for non-ascii textSeth Cantrell
Unprintable source in diagnostics is transformed to a printable form and then displayed with reversed colors if possible. Unprintable characters are displayed as <U+NNNN> while bytes that do not represent valid characters are shown as <XX>. Column adjustments to diagnostic carets, highlighted ranges, and fixups are made both for characters escaped as above and for characters which are printable but take up more than a single column. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154980 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-17Revert "Nicer display of unprintable source, and fix caret display for ↵Seth Cantrell
non-ascii text" This reverts commit e9a3b76ba589a8a884e978273beaed0d97cf9861. Revert "fix display of source lines with null characters" This reverts commit 70712b276e40bbe11e5063dfc7e82ce3209929cd. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154950 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-17fix display of source lines with null charactersSeth Cantrell
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154947 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-17Nicer display of unprintable source, and fix caret display for non-ascii textSeth Cantrell
Unprintable source in diagnostics is transformed to a printable form and then displayed with reversed colors if possible. Unprintable characters are displayed as <U+NNNN> while bytes that do not represent valid characters are shown as <XX>. Column adjustments to diagnostic carets, highlighted ranges, and fixups are made both for characters escaped as above and for characters which are printable but take up more than a single column. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154946 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-13Remove the -cc1-level option "-pubnames-dump". Such things should stayDouglas Gregor
out of the tree and use the tooling infrastructure. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154668 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-12Implement support for 18 of the GNU-compatible __atomic builtins.Richard Smith
This is not quite sufficient for libstdc++'s <atomic>: we still need __atomic_test_and_set and __atomic_clear, and may need a more complete __atomic_is_lock_free implementation. We are also missing an implementation of __atomic_always_lock_free, __atomic_nand_fetch, and __atomic_fetch_nand, but those aren't needed for libstdc++. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154579 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-12Implement clang_getDiagnosticCategoryText() to provide a way for a client of ↵Ted Kremenek
libclang to accurately get the diagnostic category name from a serialized diagnostic when the version of libclang used to read the diagnostic file is newer than the clang that emitted the diagnostic file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154567 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-27Introduce a -cc1-level option -pubnames-dump, which simply dumps theDouglas Gregor
list of identifiers that that 'public' names at the end of the translation unit, e.g., defined macros or identifiers with top-level names, in sorted order. Meant to support <rdar://problem/10921596>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153522 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-20Don't include FixIts with a null replacement range. Fixes ↵Ted Kremenek
<rdar://problem/11040133>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153122 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-16Add warning flag for '#import is a language extension', -W#import-pedantic.Ted Kremenek
Don't know if it is an anathema to include '#' in the warning name. I'm fine with changing it, but this was the most obvious name. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152886 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-15Unpluralize -Wfoo-conversions warnings for consistency.David Blaikie
Err on the side of brevity and rename (while providing aliases for the original name) -Wbool-conversions, -Wint-conversions, and -Wvector-conversions for consistency with constant, literal, string, and sign conversion warnings. And name the diagnostic groups explicitly while I'm here rather than rewriting the string in the groups and sema td files. Curiously, vector-conversion is not under -Wconversion. Perhaps it should be. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@152776 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-02Move int<->pointer conversion warnings behind -Wint-conversions.Nico Weber
This is consistent with -Wbool-conversion. Let me know if you prefer a different flag name. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151934 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-29Reapply r151638 and r151641.James Molloy
The bug that was caught by Apple's internal buildbots was valid and also showed another bug in my implementation. These are now fixed, with regression tests added to catch them both (not Darwin-specific). Original log: ==================== Revert r151638 because it causes assertion hit on PCH creation for Cocoa.h Original log: --------------------- Correctly track tags and enum members defined in the prototype of a function, and ensure they are properly scoped. This fixes code such as: enum e {x, y}; int f(enum {y, x} n) { return 0; } This finally fixes PR5464 and PR5477. --------------------- I also reverted r151641 which was enhancement on top of r151638. ==================== git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151712 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-28Revert r151638 because it causes assertion hit on PCH creation for Cocoa.hArgyrios Kyrtzidis
Original log: --------------------- Correctly track tags and enum members defined in the prototype of a function, and ensure they are properly scoped. This fixes code such as: enum e {x, y}; int f(enum {y, x} n) { return 0; } This finally fixes PR5464 and PR5477. --------------------- I also reverted r151641 which was enhancement on top of r151638. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151667 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-28Correctly track tags and enum members defined in the prototype of a ↵James Molloy
function, and ensure they are properly scoped. This fixes code such as: enum e {x, y}; int f(enum {y, x} n) { return 0; } This finally fixes PR5464 and PR5477. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151638 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-15Support GCC's bug^Wextension allowing class array members to be initalized by aRichard Smith
parenthesized braced-init-list in the base/member initialization list. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150625 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-13Remove unused diagnostics from include/clang/Basic/Diagnostic*.td files.Dmitri Gribenko
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150409 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-02Per discussion on cfe-dev, remove '#error' and '#warning' from diagnostic text.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149566 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-25Fix -fmacro-backtrace-limit=0 to show the entire macro backtrace.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148930 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20rename -ccc-host-triple into -targetSebastian Pop
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148582 91177308-0d34-0410-b5e6-96231b3b80d8