| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
similar logic in llvm-gcc and will hopefully be fixed soon.
llvm-svn: 64349
|
|
|
|
| |
llvm-svn: 64338
|
|
|
|
|
|
|
| |
actually *slightly* slower than the binary search. Since this is algorithmically
better, further performance tuning should be able to make this faster.
llvm-svn: 64326
|
|
|
|
| |
llvm-svn: 64318
|
|
|
|
|
|
| |
referenced by other tables.
llvm-svn: 64304
|
|
|
|
| |
llvm-svn: 64258
|
|
|
|
|
|
| |
'#endif'.
llvm-svn: 64250
|
|
|
|
|
|
| |
random hash table order, I don't like non-determinstic output.
llvm-svn: 64248
|
|
|
|
|
|
| |
preparing for other changes within the loop.
llvm-svn: 64247
|
|
|
|
|
|
| |
with an on-disk chained hash table. This data structure is implemented using templates, and will be used to replace similar data structures. This change leads to no visibile performance impact on Cocoa.h, but now we only pay a price for the table on order with the number of files accessed and not the number in the PTH file.
llvm-svn: 64245
|
|
|
|
| |
llvm-svn: 64244
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We handle indentation of decls better.
We Indent extern "C" { } stuff better.
We print out structure contents more often.
We handle pass indentation information into the statement printer, so that
nested things come out more indented.
We print out FieldDecls.
We print out Vars.
We print out namespaces.
We indent functions better.
llvm-svn: 64232
|
|
|
|
| |
llvm-svn: 64193
|
|
|
|
|
|
| |
on-disk chained hash table.
llvm-svn: 64192
|
|
|
|
|
|
| |
subexpressions.
llvm-svn: 64162
|
|
|
|
|
|
| |
This uncovers some bugs, so several test cases now fail.
llvm-svn: 64025
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Made allocation of Stmt objects using vanilla new/delete a *compiler
error* by making this new/delete "protected" within class Stmt.
- Now the only way to allocate Stmt objects is by using the new
operator that takes ASTContext& as an argument. This ensures that
all Stmt nodes are allocated from the same (pool) allocator.
- Naturally, these two changes required that *all* creation sites for
AST nodes use new (ASTContext&). This is a large patch, but the
majority of the changes are just this mechanical adjustment.
- The above changes also mean that AST nodes can no longer be
deallocated using 'delete'. Instead, one most do
StmtObject->Destroy(ASTContext&) or do
ASTContextObject.Deallocate(StmtObject) (the latter not running the
'Destroy' method).
Along the way I also...
- Made CompoundStmt allocate its array of Stmt* using the allocator in
ASTContext (previously it used std::vector). There are a whole
bunch of other Stmt classes that need to be similarly changed to
ensure that all memory allocated for ASTs comes from the allocator
in ASTContext.
- Added a new smart pointer ExprOwningPtr to Sema.h. This replaces
the uses of llvm::OwningPtr within Sema, as llvm::OwningPtr used
'delete' to free memory instead of a Stmt's 'Destroy' method.
Big thanks to Doug Gregor for helping with the acrobatics of making
'new/delete' private and the new smart pointer ExprOwningPtr!
llvm-svn: 63997
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
redeclarations. For example, checks that a class template
redeclaration has the same template parameters as previous
declarations.
Detangled class-template checking from ActOnTag, whose logic was
getting rather convoluted because it tried to handle C, C++, and C++
template semantics in one shot.
Made some inroads toward eliminating extraneous "declaration does not
declare anything" errors by adding an "error" type specifier.
llvm-svn: 63973
|
|
|
|
|
|
|
|
|
|
|
| |
ASTContext. This required changing all clients to pass in the ASTContext& to the
constructor of StringLiteral. I also changed all allocations of StringLiteral to
use new(ASTContext&).
Along the way, I updated a bunch of new()'s in StmtSerialization.cpp to use the
allocator from ASTContext& (not complete).
llvm-svn: 63958
|
|
|
|
|
|
|
| |
diffing the output of:
clang -dM -o - -E -x c foo.c | sort
llvm-svn: 63926
|
|
|
|
| |
llvm-svn: 63924
|
|
|
|
| |
llvm-svn: 63922
|
|
|
|
|
|
| |
implementing PR3492: #include failures should be a fatal error
llvm-svn: 63915
|
|
|
|
|
|
|
|
| |
This shrinks OwningResult by one pointer. Since it is no longer larger than OwningPtr, merge the two.
This leads to simpler client code and speeds up my benchmark by 2.7%.
For some reason, this exposes a previously hidden bug, causing a regression in SemaCXX/condition.cpp.
llvm-svn: 63867
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the ownership of BugTypes and BugReports. Now BugReports are owned by BugTypes,
and BugTypes are owned by the BugReporter object.
The major functionality change in this patch is that reports are not immediately
emitted by a call to BugReporter::EmitWarning (now called EmitReport), but
instead of queued up in report "equivalence classes". When
BugReporter::FlushReports() is called, it emits one diagnostic per report
equivalence class. This provides a nice cleanup with the caching of reports as
well as enables the BugReporter engine to select the "best" path for reporting a
path-sensitive bug based on all the locations in the ExplodedGraph that the same
bug could occur.
Along with this patch, Leaks are now coalesced into a common equivalence class
by their allocation site, and the "summary" diagnostic for leaks now reports the
allocation site as the location of the bug (this may later be augmented to also
provide an example location where the leak occurs).
llvm-svn: 63796
|
|
|
|
|
|
|
|
| |
- Emits all declarations, even unused (static) ones.
- Useful when doing minimization of codegen problems (otherwise
problems localized to a static function aren't minimized well).
llvm-svn: 63776
|
|
|
|
| |
llvm-svn: 63750
|
|
|
|
| |
llvm-svn: 63711
|
|
|
|
|
|
|
|
| |
getColumnNumber. This fixes a FIXME in
SourceManager::getPresumedLoc because we now just decompose
the sloc once.
llvm-svn: 63701
|
|
|
|
|
|
| |
endings after rewrite.
llvm-svn: 63657
|
|
|
|
|
|
| |
Pointers to functions don't work yet, and pointers to overloaded functions even less. Also, far too much illegal code is accepted.
llvm-svn: 63655
|
|
|
|
|
|
|
|
|
| |
ContentCache objects to using a densemap and list, and allocating
the ContentCache objects from a bump pointer. This does not speed
up or slow down things substantially, but gives us control over
their alignment.
llvm-svn: 63628
|
|
|
|
| |
llvm-svn: 63563
|
|
|
|
|
|
|
| |
- Pass "Actions" vector by reference.
- Remove guard against checking macro-generated code.
llvm-svn: 63546
|
|
|
|
|
|
|
|
| |
This fixes <rdar://problem/6529468> clang ObjC rewriter: Need parenthesis around dereferences in rewritten Blocks.
Also changed RewriteObjC::SynthesizeBlockFunc() to declare a pointer to the block argument even when there are no user-supplied arguments to the block.
llvm-svn: 63522
|
|
|
|
| |
llvm-svn: 63449
|
|
|
|
|
|
| |
done. Add a -fnolax-vector-conversions option. Fixes PR2862.
llvm-svn: 63447
|
|
|
|
| |
llvm-svn: 63409
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
location. We now -E a file containing "foo" into:
# 1 "t.c"
# 1 "t.c" 1
# 1 "<predefines>" 1
# 1 "t.c" 2
foo
instead of:
# 1 "t.c"
# 1 "t.c" 1
# 0 "t.c"
# 1 "<predefines>" 1
# 1 "t.c" 2
foo
llvm-svn: 63405
|
|
|
|
| |
llvm-svn: 63385
|
|
|
|
|
|
| |
cpp-output, not c-cpp-output.
llvm-svn: 63345
|
|
|
|
|
|
|
| |
diags around, eliminating #defines, etc. Patch by
Anders Johnsen!
llvm-svn: 63318
|
|
|
|
|
|
| |
changes in various diagnostics code.
llvm-svn: 63282
|
|
|
|
| |
llvm-svn: 63272
|
|
|
|
|
|
| |
redundant #includes. Patch by Anders Johnsen!
llvm-svn: 63271
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The approach I've taken in this patch is relatively straightforward,
although the code itself is non-trivial. Essentially, as we process
an initializer list we build up a fully-explicit representation of the
initializer list, where each of the subobject initializations occurs
in order. Designators serve to "fill in" subobject initializations in
a non-linear way. The fully-explicit representation makes initializer
lists (both with and without designators) easy to grok for codegen and
later semantic analyses. We keep the syntactic form of the initializer
list linked into the AST for those clients interested in exactly what
the user wrote.
Known limitations:
- Designating a member of a union that isn't the first member may
result in bogus initialization (we warn about this)
- GNU array-range designators are not supported (we warn about this)
llvm-svn: 63242
|
|
|
|
|
|
| |
can be used to report issues such as a missing PTH file.
llvm-svn: 63231
|
|
|
|
|
|
| |
testcase :)
llvm-svn: 63182
|
|
|
|
|
|
| |
pass as an argument a TranslationUnit object whose contents live beyond the call to ParseAST.
llvm-svn: 63175
|
|
|
|
| |
llvm-svn: 63168
|