| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce a new PrettyStackTraceDecl.
Use it to add the top level LLVM IR generation stuff in
Backend.cpp to stack traces. We now get crashes like:
Stack dump:
0. Program arguments: clang t.c -emit-llvm
1. <eof> parser at end of file
2. t.c:1:5: LLVM IR generation of declaration 'a'
Abort
for IR generation crashes.
llvm-svn: 66153
|
| |
|
|
| |
llvm-svn: 66152
|
| |
|
|
| |
llvm-svn: 66151
|
| |
|
|
| |
llvm-svn: 66150
|
| |
|
|
| |
llvm-svn: 66149
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
token.
For example:
Stack dump:
0. Program arguments: clang t.cpp
1. t.cpp:4:8: current parser token: ';'
2. t.cpp:3:1: parsing struct/union/class body 'x'
Abort
It is weird that the parser is always "underneath" any parse context
actions, but the parser is created first.
llvm-svn: 66148
|
| |
|
|
| |
llvm-svn: 66146
|
| |
|
|
|
|
|
|
| |
- Add Driver::ParseArgStrings.
- Store values directly in CommaJoinedArg to support simple access.
- Add FlagArg class.
llvm-svn: 66142
|
| |
|
|
|
|
| |
tracking objects assigned to self's ivar.
llvm-svn: 66139
|
| |
|
|
| |
llvm-svn: 66136
|
| |
|
|
|
|
| |
'self'.
llvm-svn: 66133
|
| |
|
|
|
|
|
| |
return/argument types. (The generated IR isn't ideal, but we can't
really do better in general.)
llvm-svn: 66132
|
| |
|
|
| |
llvm-svn: 66131
|
| |
|
|
| |
llvm-svn: 66130
|
| |
|
|
|
|
|
| |
PR3688. (The FIXME is a rather big performance issue, but it only
affects code using this feature, which is relatively rare.)
llvm-svn: 66128
|
| |
|
|
|
|
| |
and back.
llvm-svn: 66127
|
| |
|
|
| |
llvm-svn: 66126
|
| |
|
|
|
|
| |
loc::ConcreteInt.
llvm-svn: 66125
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
gives us:
Stack dump:
0. using-directive.cpp:26:16: in compound statement ('{}')
1. using-directive.cpp:26:16: parsing function body 'A::K1::foo'
2. using-directive.cpp:25:3: parsing struct/union/class body 'A::K1'
3. using-directive.cpp:5:1: parsing namespace 'A'
4. clang using-directive.cpp
Abort
for code like:
namespace A {
...
class K1 {
void foo() { <<crash>>
llvm-svn: 66124
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
like this:
Stack dump:
0. using-directive.cpp:9:14: in compound statement ('{}')
1. using-directive.cpp:9:14: parsing function body 'A::B::f'
2. using-directive.cpp:7:3: parsing namespace 'A::B'
3. using-directive.cpp:5:1: parsing namespace 'A'
4. clang using-directive.cpp
Abort
for testcase like like:
namespace A {
short i;
namespace B {
long i;
void f() { <<crash>>
llvm-svn: 66123
|
| |
|
|
|
|
|
|
|
| |
Stack dump:
0. message.m:53:13: in compound statement ('{}')
1. message.m:53:13: parsing Objective-C method 'xx'
2. clang message.m
llvm-svn: 66121
|
| |
|
|
| |
llvm-svn: 66120
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
like:
Stack dump:
0. t.c:5:10: in compound statement ('{}')
1. t.c:3:12: in compound statement ('{}')
2. t.c:3:12: parsing function body 'foo'
3. clang t.c
Abort
llvm-svn: 66118
|
| |
|
|
|
|
| |
necessary.
llvm-svn: 66117
|
| |
|
|
| |
llvm-svn: 66114
|
| |
|
|
|
|
|
| |
locations that are the current tok loc. Note that inline C++ methods
have a big fixme that could cause a crash.
llvm-svn: 66113
|
| |
|
|
| |
llvm-svn: 66111
|
| |
|
|
| |
llvm-svn: 66110
|
| |
|
|
| |
llvm-svn: 66109
|
| |
|
|
|
|
|
|
|
|
| |
parser. For example, we now print out:
0. t.c:5:10: in compound statement {}
1. t.c:3:12: in compound statement {}
2. clang t.c -fsyntax-only
llvm-svn: 66108
|
| |
|
|
| |
llvm-svn: 66107
|
| |
|
|
| |
llvm-svn: 66106
|
| |
|
|
|
|
| |
replaced anyway.
llvm-svn: 66101
|
| |
|
|
| |
llvm-svn: 66100
|
| |
|
|
| |
llvm-svn: 66099
|
| |
|
|
|
|
|
| |
to unknown functions. Most of this logic should be eventually moved to
RegionStore and be made lazy.
llvm-svn: 66094
|
| |
|
|
|
|
|
|
|
| |
- Have 'TypedRegion::getRValueType()' return a null QualType for 'id<...>'
instead of aborting.
- Change 'TypedRegion::isBoundable()' to return true for all objects with a
non-null RValueType (this may not be the final behavior).
llvm-svn: 66093
|
| |
|
|
|
|
|
|
| |
multiple symbols conjured at the same location. All that is required of the tag
is that it is a fixed void* value that points to an memory address that remains
valid throughout the remainder of the lifetime of the SymbolManager.
llvm-svn: 66092
|
| |
|
|
| |
llvm-svn: 66091
|
| |
|
|
| |
llvm-svn: 66090
|
| |
|
|
| |
llvm-svn: 66089
|
| |
|
|
| |
llvm-svn: 66088
|
| |
|
|
|
|
| |
c-style functions declared inside objc @implementations.
llvm-svn: 66087
|
| |
|
|
|
|
| |
- Also, add Input and Unknown opts to OptTable.
llvm-svn: 66079
|
| |
|
|
|
|
| |
better crash info when clang crashes. Step #2 of many.
llvm-svn: 66078
|
| |
|
|
| |
llvm-svn: 66077
|
| |
|
|
|
|
| |
will make this efficient later (if it even matters)...
llvm-svn: 66071
|
| |
|
|
| |
llvm-svn: 66070
|
| |
|
|
|
|
| |
and capturing its invocations.
llvm-svn: 66068
|
| |
|
|
| |
llvm-svn: 66067
|