Douglas Gregor [Fri, 14 Oct 2011 23:21:49 +0000 (23:21 +0000)]
Switch the C++11 status table from a developer-centric list to a
user-centric list, with Clang version numbers, following GCC's lead
(and user requests).
Douglas Gregor [Fri, 14 Oct 2011 20:34:19 +0000 (20:34 +0000)]
Don't try to diagnose anything when we're passing incomplete types
through varargs. This only happens when we're in an unevaluated
context, where we don't want to trigger an error anyway. Fixes PR11131
/ <rdar://problem/10288375>.
Richard Smith [Fri, 14 Oct 2011 20:31:37 +0000 (20:31 +0000)]
Reinstate r141898 (reverted in r141921), without the -Wc++98-compat-variadic-templates flag. Consensus is that -Wc++98-compat is a useful addition to clang, but per-C++11-feature warnings may not be.
Original patch by Jeffrey Yasskin.
Douglas Gregor [Fri, 14 Oct 2011 15:55:40 +0000 (15:55 +0000)]
Under ARC, merge the bit corresponding to the ns_returns_retained
attribute from the first declaration to later declarations. Fixes
<rdar://problem/10142572>.
Douglas Gregor [Fri, 14 Oct 2011 15:31:12 +0000 (15:31 +0000)]
When declaring an out-of-line template, attempt to rebuild any types
within the template parameter list that may have changed now that we
know the current instantiation. Fixes <rdar://problem/10194295>.
Bob Wilson [Fri, 14 Oct 2011 05:03:44 +0000 (05:03 +0000)]
Use Triple.isOSDarwin() instead of comparing against Triple::Darwin.
There are now separate Triple::MacOSX and Triple::IOS values for the OS
so comparing against Triple::Darwin will fail to match those. Note that
I changed the expected output for the Driver/rewrite-objc.m test, which had
previously not been passing Darwin-specific options with the macosx triple.
Richard Smith [Thu, 13 Oct 2011 23:32:09 +0000 (23:32 +0000)]
Rename -Wc++0x-compat, -Wc++0x-extensions and -Wc++0x-narrowing from c++0x to
c++11. The old names are kept for backwards-compatibility. Patch by Ahmed
Charles! Names for backwards-compatible DiagGroups removed by me.
Richard Trieu [Thu, 13 Oct 2011 23:26:59 +0000 (23:26 +0000)]
Fix a test case where FileCheck is used to test code corrected by -fixit.
If the code file is not run through the preproccessor to remove comments,
then FileCheck will match the strings within the CHECK commands rendering
the test useless.
Jeffrey Yasskin [Thu, 13 Oct 2011 22:18:05 +0000 (22:18 +0000)]
Implement the first piece of a -Wc++98-compat flag so that people can build in
C++11 mode but keep their sources compatible with C++98. This patch implements
the -Wc++98-compat-variadic-templates sub-flag and -Wc++98-compat to include
it.
Eric Christopher [Thu, 13 Oct 2011 21:45:18 +0000 (21:45 +0000)]
Recommit:
Start handling debug line and scope information better:
Migrate most of the location setting within the larger API in CGDebugInfo and
update a lot of callers.
Remove the existing file/scope change machinery in UpdateLineDirectiveRegion
and replace it with DILexicalBlockFile usage.
Ted Kremenek [Thu, 13 Oct 2011 18:50:06 +0000 (18:50 +0000)]
Tweak -Wuninitialized's handling of 'int x = x' to report that as the root cause of an uninitialized variable IFF there are other uses of that uninitialized variable. Fixes <rdar://problem/9259237>.
Douglas Gregor [Wed, 12 Oct 2011 20:35:48 +0000 (20:35 +0000)]
When we determine that a function template specialization produced as
part of template argument deduction is ill-formed, we mark it as
invalid and treat it as a deduction failure. If we happen to find that
specialization again, treat it as a deduction failure rather than
silently building a call to the declaration.
Fixes PR11117, a marvelous bug where deduction failed after creating
an invalid specialization, causing overload resolution to pick a
different candidate. Then we performed a similar overload resolution
later, and happily picked the invalid specialization to
call... resulting in a silent link failure.
Bob Wilson [Wed, 12 Oct 2011 19:55:31 +0000 (19:55 +0000)]
Change __extension__ to disable only diagnostics controlled by -pedantic.
This changes clang to match GCC's behavior for __extension__, which temporarily
disables the -pedantic flag. Warnings that are enabled without -pedantic
are not affected. Besides the general goodness of matching GCC's precedent,
my motivation for this is that macros in the arm_neon.h header need to use
__extension__ to avoid pedantic complaints about their use of statement
expressions, yet we still want to warn about incompatible pointer arguments
for those macros.
Rafael Espindola [Wed, 12 Oct 2011 19:51:18 +0000 (19:51 +0000)]
Add returns_twice to functions that are known to return twice. This implements
the same behavior of gcc by keeping the attribute out of the function type.
Douglas Gregor [Wed, 12 Oct 2011 19:26:40 +0000 (19:26 +0000)]
Switch diagnostic text from "C++0x" over to "C++11".
We'd also like for "C++11" or "c++11" to be used for the warning
groups, but without removing the old warning flags. Patches welcome;
I've run out of time to work on this today.
Douglas Gregor [Wed, 12 Oct 2011 16:37:45 +0000 (16:37 +0000)]
Introduce BalancedDelimiterTracker, to better track open/close
delimiter pairs and detect when we exceed the implementation limit for
nesting depth, from Aaron Ballman!
Douglas Gregor [Wed, 12 Oct 2011 15:40:49 +0000 (15:40 +0000)]
Teach __has_nothrow_assign not to complain about access (GCC and EDG
ignore access entirely for it) and not to crash on assignment operator
templates. Fixes PR11110.
Richard Smith [Wed, 12 Oct 2011 00:37:51 +0000 (00:37 +0000)]
Handle Perforce-style conflict markers like normal conflict markers. Perforce
swaps over the <<<< and >>>> markers, and uses shorter markers than traditional
tools.
John McCall [Tue, 11 Oct 2011 23:14:30 +0000 (23:14 +0000)]
Catch placeholder types in DefaultLvalueConversion
and DefaultFunctionArrayLvalueConversion. To prevent
significant regression for should-this-be-a-call fixits,
and to repair some such regression from the introduction of
bound member placeholders, make those placeholder checks
try to build calls appropriately. Harden the build-a-call
logic while we're at it.
Eric Christopher [Tue, 11 Oct 2011 23:00:55 +0000 (23:00 +0000)]
Start handling debug line and scope information better:
Migrate most of the location setting within the larger API in CGDebugInfo and
update a lot of callers.
Remove the existing file/scope change machinery in UpdateLineDirectiveRegion
and replace it with DILexicalBlockFile usage.
Richard Smith [Tue, 11 Oct 2011 19:57:52 +0000 (19:57 +0000)]
Add a -Wc++0x-compat warning for C++11 keywords used as identifiers when in
C++98 mode. Only the first occurrence of each keyword will produce a warning.
Daniel Dunbar [Tue, 11 Oct 2011 18:20:16 +0000 (18:20 +0000)]
Driver: Add support for a new -nostdlibinc option.
- This disables the system include directories, but not the compiler builtin
directories. Useful for projects that want to use things like the intrinsic
headers, but are otherwise freestanding.
- I'm willing to reconsider the option naming, I also considered providing an
explicit -builtinc (which would match -nobuiltininc), but this is more
consistent with existing options.