| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 68933
|
| |
|
|
|
|
| |
PR3972: Poor diagnostic with missing ')'
llvm-svn: 68932
|
| |
|
|
|
|
| |
by making ASTContext::isObjCObjectPointerType accept typedefs of id.
llvm-svn: 68931
|
| |
|
|
| |
llvm-svn: 68930
|
| |
|
|
|
|
| |
patch by Alexei Svitkine!
llvm-svn: 68929
|
| |
|
|
| |
llvm-svn: 68928
|
| |
|
|
| |
llvm-svn: 68927
|
| |
|
|
| |
llvm-svn: 68926
|
| |
|
|
| |
llvm-svn: 68925
|
| |
|
|
|
|
| |
only if symbolic addresses are RIP relatives.
llvm-svn: 68924
|
| |
|
|
| |
llvm-svn: 68923
|
| |
|
|
| |
llvm-svn: 68922
|
| |
|
|
| |
llvm-svn: 68921
|
| |
|
|
|
|
| |
to isValidAfterIdentifierInDeclarator, as suggested by Sebastian.
llvm-svn: 68920
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that I noticed working on other things.
Instead of emitting:
t2.cc:1:8: error: use of undeclared identifier 'g'
int x(*g);
^
t2.cc:1:10: error: expected ')'
int x(*g);
^
t2.cc:1:6: note: to match this '('
int x(*g);
^
We now only emit:
t2.cc:1:7: warning: type specifier missing, defaults to 'int'
int x(*g);
^
Note that the example in SemaCXX/nested-name-spec.cpp:f4 is still
not great, we now produce both of:
void f4(undef::C); // expected-error {{use of undeclared identifier 'undef'}} \
expected-error {{variable has incomplete type 'void'}}
The second diagnostic should be silenced by something getting marked invalid.
I don't plan to fix this though.
llvm-svn: 68919
|
| |
|
|
| |
llvm-svn: 68918
|
| |
|
|
|
|
| |
this allows downstream diags to be properly silenced.
llvm-svn: 68917
|
| |
|
|
|
|
| |
return null.
llvm-svn: 68916
|
| |
|
|
| |
llvm-svn: 68915
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
struct xyz { int y; };
enum abc { ZZZ };
static xyz b;
abc c;
we used to produce:
t2.c:4:8: error: unknown type name 'xyz'
static xyz b;
^
t2.c:5:1: error: unknown type name 'abc'
abc c;
^
we now produce:
t2.c:4:8: error: use of tagged type 'xyz' without 'struct' tag
static xyz b;
^
struct
t2.c:5:1: error: use of tagged type 'abc' without 'enum' tag
abc c;
^
enum
GCC produces the normal:
t2.c:4: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘b’
t2.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘c’
rdar://6783347
llvm-svn: 68914
|
| |
|
|
|
|
|
| |
if a decl is invalid, it isn't added to the Decls array, so we
need to pass in Decls.size() to avoid reading uninit memory.
llvm-svn: 68913
|
| |
|
|
|
|
|
| |
if an API change causes it to be out of date. The code is copied out of
LangImpl7.html.
llvm-svn: 68912
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
which tries to do better error recovery when it is "obvious" that an
identifier is a mis-typed typename. In this case, we try to parse
it as a typename instead of as the identifier in a declarator, which
gives us several options for better error recovery and immediately
makes diagnostics more useful. For example, we now produce:
t.c:4:8: error: unknown type name 'foo_t'
static foo_t a = 4;
^
instead of:
t.c:4:14: error: invalid token after top level declarator
static foo_t a = 4;
^
Also, since we now parse "a" correctly, we make a decl for it,
preventing later uses of 'a' from emitting things like:
t.c:12:20: error: use of undeclared identifier 'a'
int bar() { return a + b; }
^
I'd really appreciate any scrutiny possible on this, it
is a tricky area.
llvm-svn: 68911
|
| |
|
|
| |
llvm-svn: 68910
|
| |
|
|
| |
llvm-svn: 68909
|
| |
|
|
|
|
|
| |
exit at the first decl found that creates a scope, don't evaluate
decl_end() every iteration.
llvm-svn: 68908
|
| |
|
|
| |
llvm-svn: 68907
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
strncat :(
strncat(foo, "bar", 99)
would be optimized to
memcpy(foo+strlen(foo), "bar", 100, 1)
instead of
memcpy(foo+strlen(foo), "bar", 4, 1)"
Patch by Benjamin Kramer!
llvm-svn: 68905
|
| |
|
|
| |
llvm-svn: 68904
|
| |
|
|
| |
llvm-svn: 68903
|
| |
|
|
|
|
|
|
|
| |
different code path that I forgot previously.
Implement the rvalue reference overload dance for returning local objects. Returning a local object first tries to find a move constructor now.
The error message when no move constructor is defined (or is not applicable) and the copy constructor is deleted is quite ugly, though.
llvm-svn: 68902
|
| |
|
|
| |
llvm-svn: 68901
|
| |
|
|
| |
llvm-svn: 68900
|
| |
|
|
|
|
| |
Class and unqualified id's are.
llvm-svn: 68899
|
| |
|
|
| |
llvm-svn: 68898
|
| |
|
|
| |
llvm-svn: 68897
|
| |
|
|
| |
llvm-svn: 68896
|
| |
|
|
| |
llvm-svn: 68895
|
| |
|
|
|
|
|
| |
list of another protocol definition. This warning is very noisy and GCC doesn't
produce it so existing code doesn't expect it.
llvm-svn: 68894
|
| |
|
|
| |
llvm-svn: 68893
|
| |
|
|
|
|
| |
or "Objective-C interface types" etc.
llvm-svn: 68892
|
| |
|
|
|
|
| |
crashes codegen.
llvm-svn: 68891
|
| |
|
|
|
|
| |
See comment for details. This fixes rdar://6772169
llvm-svn: 68890
|
| |
|
|
|
|
| |
copying into the right register, avoiding a copy.
llvm-svn: 68889
|
| |
|
|
|
|
| |
and make it return the assigned register.
llvm-svn: 68888
|
| |
|
|
| |
llvm-svn: 68887
|
| |
|
|
|
|
|
| |
hasImplicitDefOfPhysReg methods. Use them to remove a
look in X86 fast isel.
llvm-svn: 68886
|
| |
|
|
|
|
| |
code. Patch by Benjamin Kramer!
llvm-svn: 68885
|
| |
|
|
|
|
| |
macro definitions.
llvm-svn: 68884
|
| |
|
|
| |
llvm-svn: 68883
|