| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
destination type for initialization, assignment, parameter-passing,
etc. The main issue fixed here is that we used rather confusing
wording for diagnostics such as
t.c:2:9: warning: initializing 'char const [2]' discards qualifiers,
expected 'char *' [-pedantic]
char *name = __func__;
^ ~~~~~~~~
We're not initializing a 'char const [2]', we're initializing a 'char
*' with an expression of type 'char const [2]'. Similar problems
existed for other diagnostics in this area, so I've normalized them all
with more precise descriptive text to say what we're
initializing/converting/assigning/etc. from and to. The warning for
the code above is now:
t.c:2:9: warning: initializing 'char *' from an expression of type
'char const [2]' discards qualifiers [-pedantic]
char *name = __func__;
^ ~~~~~~~~
Fixes <rdar://problem/7447179>.
llvm-svn: 100832
|
| |
|
|
|
|
|
| |
This is still not an ideal solution, but should disable the check for other
targets where the value of O_CREAT is different.
llvm-svn: 100818
|
| |
|
|
|
|
|
|
| |
buildbot. I'm
looking into an alternate fix right now.
llvm-svn: 100816
|
| |
|
|
|
|
|
| |
warning. It's not harmful to have such pointless declarations, and GCC
does not diagnose this issue consistently.
llvm-svn: 100814
|
| |
|
|
|
|
| |
of c-style arguments. Completes radar 7445205.
llvm-svn: 100813
|
| |
|
|
|
|
| |
variable declarations.
llvm-svn: 100809
|
| |
|
|
|
|
| |
Fixes PR6752.
llvm-svn: 100806
|
| |
|
|
|
|
|
|
| |
control-flow has
automatic storage. This matches the corresponding check for 'dispatch_once()'.
llvm-svn: 100803
|
| |
|
|
|
|
|
|
|
|
| |
inline' functions
unless they are used. I discussed this with Daniel Dunbar, and we agreed that this
provides an inconsistent warnings experience for the user and that there were
genuine cases where we wouldn't want to do this optimization.
llvm-svn: 100800
|
| |
|
|
|
|
|
|
|
| |
<tr1/hashtable> header, where a friend class template
std::tr1::__detail::_Map_base is declared with the wrong template
parameters. GCC doesn't catch the problem, so Clang does a little
back-flip to avoid diagnosing just this one instance of the problem.
llvm-svn: 100790
|
| |
|
|
|
|
| |
parameters list for encoding.
llvm-svn: 100788
|
| |
|
|
|
|
|
| |
Declarator that depends on it. This fixes several redundant errors and bad
recoveries.
llvm-svn: 100779
|
| |
|
|
| |
llvm-svn: 100778
|
| |
|
|
| |
llvm-svn: 100776
|
| |
|
|
| |
llvm-svn: 100775
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
__cxxabiv1::__fundamental_type_info in every translation
unit. Previously, we would perform name lookup for
__cxxabiv1::__fundamental_type_info at the end of IRGen for a each
translation unit, to determine whether it was present. If so, we we
produce type information for all of the fundamental types. However,
this name lookup causes PCH deserialization of a significant part of the
translation unit, which has a woeful impact on performance.
With this change, we now look at each record type after we've
generated its vtable to see if it is
__cxxabiv1::__fundamental_type_info. If so, we generate type info for
all of the fundamental types. This works because
__cxxabiv1::__fundamental_type_info should always have a key function
(typically the virtual destructor), that will be defined once in the
support library. The fundamental type information will end up there.
Fixes <rdar://problem/7840011>.
llvm-svn: 100772
|
| |
|
|
| |
llvm-svn: 100770
|
| |
|
|
| |
llvm-svn: 100753
|
| |
|
|
| |
llvm-svn: 100750
|
| |
|
|
|
|
| |
-dump-record-layouts a bit that Sema honors.
llvm-svn: 100747
|
| |
|
|
| |
llvm-svn: 100746
|
| |
|
|
|
|
| |
bit-field LValues to just store the base address of object containing the bit-field.
llvm-svn: 100745
|
| |
|
|
|
|
| |
methods. wip.
llvm-svn: 100734
|
| |
|
|
| |
llvm-svn: 100733
|
| |
|
|
| |
llvm-svn: 100732
|
| |
|
|
| |
llvm-svn: 100730
|
| |
|
|
|
|
|
| |
parameter, explicitly ask the user to give it arguments. We used to
complain that it wasn't a type and expect the user to figure it out.
llvm-svn: 100729
|
| |
|
|
|
|
| |
isNotEmpty calls.
llvm-svn: 100722
|
| |
|
|
|
|
|
| |
code won't actually get used yet because we don't handle non-type
parameter packs, but when we do, this code should jump in and work.
llvm-svn: 100716
|
| |
|
|
| |
llvm-svn: 100708
|
| |
|
|
| |
llvm-svn: 100707
|
| |
|
|
| |
llvm-svn: 100704
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
emitting diagnostics after it has produced that many errors. Give this a
default value of 20 which produces plenty of errors for people to fix before
recompiling but not so many that their entire console scrolls away when the
compiler gets confused. The experience looks like this:
$ clang foo.c
<tons of crap>
foo.c:102:3: error: unknown type name 'somethingbad'
somethingbad x;
^
fatal error: too many errors emitted, stopping now
36 warnings and 20 errors generated.
llvm-svn: 100689
|
| |
|
|
| |
llvm-svn: 100687
|
| |
|
|
|
|
|
|
|
| |
isn't any extra work to perform. Also, don't check for unused
parameters when the warnings will be suppressed anyway. Improves
performance of -fsyntax-only on 403.gcc's combine.c by ~2.5%.
<rdar://problem/7836787>
llvm-svn: 100686
|
| |
|
|
|
|
| |
Right now the limit is 0 (aka disabled)
llvm-svn: 100684
|
| |
|
|
|
|
|
|
| |
contain assignments
or similar side-effects.
llvm-svn: 100676
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of errors and warnings. This allows us to emit something like this:
2 warnings and 1 error generated.
instead of:
3 diagnostics generated.
This also stops counting 'notes' because they are just follow-on information
about the previous diag, not a diagnostic in themselves.
llvm-svn: 100675
|
| |
|
|
|
|
|
|
|
|
|
| |
- When instantiating a friend type template, perform semantic
analysis on the resulting type.
- Downgrade the errors concerning friend type declarations that do
not refer to classes to ExtWarns in C++98/03. C++0x allows
practically any type to be befriended, and ignores the friend
declaration if the type is not a class.
llvm-svn: 100635
|
| |
|
|
|
|
|
|
| |
semantic analysis) and Sema::ActOnFriendTypeDecl (the action
callback). This is a prerequisite for improving template instantiation
of friend type declarations.
llvm-svn: 100633
|
| |
|
|
|
|
|
|
| |
to the intrinsic, even when math-errno is off.
Fixes rdar://problem/7828230 by falling back on the library function.
llvm-svn: 100613
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
have the code generate slap a srcloc metadata on inline asm nodes.
This allows us to diagnose invalid inline asms with such nice
diagnostics as:
<inline asm>:1:2: error: unrecognized instruction
abc incl %eax
^
asm.c:2:12: note: generated from here
__asm__ ("abc incl %0" : "+r" (X));
^
2 diagnostics generated.
llvm-svn: 100608
|
| |
|
|
|
|
| |
Fixes a spurious warning in LLVM.
llvm-svn: 100595
|
| |
|
|
|
|
| |
0 size.
llvm-svn: 100594
|
| |
|
|
|
|
|
|
| |
have a temporary object in C++.
Also fix a tag mismatch that Doug noticed.
llvm-svn: 100593
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
definitions, e.g., after
-
or
- (id)
we'll find all of the "likely" instance methods that one would want to
declare or define at this point. In the latter case, we only produce
results whose return types match "id".
llvm-svn: 100587
|
| |
|
|
| |
llvm-svn: 100583
|
| |
|
|
|
|
| |
Fixes radar 7823675.
llvm-svn: 100582
|
| |
|
|
|
|
| |
declared in categories.
llvm-svn: 100577
|
| |
|
|
|
|
|
| |
(void*) someFunction(5, 10, 15, 20);
where the cast is presumably meant to be to 'void'.
llvm-svn: 100574
|