aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2011-02-11For consistency, use llvm::raw_ostream in the rest of the mangle api.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125360 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-11Convert RecordLayout::DataSize to CharUnits from bits, eliminating twoKen Dyck
unnecessary calls to RoundUpToAlignment. No changes to functionality intended. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125356 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-11Add a helper function, ASTContext::toBits(), that converts sizes inKen Dyck
CharUnits to sizes in bits, and use it to tidy up the places where the conversion was done explicitly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125332 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-11Use raw_ostream instead of raw_svector_ostream.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125330 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-11build/compiler-rt: Fake Clang into using the right assembler to build the ARMDaniel Dunbar
bits for the runtime libraries. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125328 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-11Eliminate a major performance problem with chained PCH, where we wereDouglas Gregor
causing the deserialization of a large number of declarations when writing the visible-updates record for the translation unit in C. This takes us from: *** AST File Statistics: 2 stat cache hits 6 stat cache misses 1/64463 source location entries read (0.001551%) 15606/16956 types read (92.038216%) 59266/89334 declarations read (66.342041%) 38952/61393 identifiers read (63.446976%) 0/7778 selectors read (0.000000%) 24192/34644 statements read (69.830276%) 388/8809 macros read (4.404586%) 2095/5189 lexical declcontexts read (40.373867%) 0/4587 visible declcontexts read (0.000000%) 0/7716 method pool entries read (0.000000%) 0 method pool misses to *** AST File Statistics: 2 stat cache hits 6 stat cache misses 1/64463 source location entries read (0.001551%) 26/16956 types read (0.153338%) 18/89334 declarations read (0.020149%) 145/61393 identifiers read (0.236183%) 0/7778 selectors read (0.000000%) 21/34644 statements read (0.060617%) 0/8809 macros read (0.000000%) 0/5189 lexical declcontexts read (0.000000%) 0/4587 visible declcontexts read (0.000000%) 0/7716 method pool entries read (0.000000%) 0 method pool misses when generating a chained PCH for a header that #includes Cocoa.h (from a PCH file) and adds one simple function declaration. The generated PCH file is now only 9580 bytes (down from > 2MB). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125326 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-11Implement AST/PCH chaining support for macro definitions. Previously,Douglas Gregor
we would deserialize all of the macro definitions we knew about while serializing the macro definitions at the end of the AST/PCH file. Even though we skipped most of them (since they were unchanged), it's still a performance problem. Now, we do the standard AST/PCH chaining trick: watch what identifiers are deserialized as macro names, and consider only those identifiers (along with macro definitions that have been deserialized/written in the source) when serializing the preprocessor state. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125324 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Use raw_svector_ostream in more places in the mangler.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125321 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Add braces to quiet a gcc warning.Matt Beaumont-Gay
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125309 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Fix think-o I committed without testing, shameful.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125299 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Fix a gcc Wuninitialized false positive.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125298 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10When we're writing macro definitions to an AST/PCH File, sort theDouglas Gregor
macro definitions by macro name first. That way, we'll get a stable ordering in the AST/PCH file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125297 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10For -Woverloaded-virtual take into account canonical methods. Fixes ↵Argyrios Kyrtzidis
rdar://8979966 & http://llvm.org/PR9182. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125296 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Fix family-friendly-o, tsk tsk.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125293 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10IRgen: Fix an immediate-exit-from-fn style nit.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125289 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Implement two related optimizations that make de-serialization ofDouglas Gregor
AST/PCH files more lazy: - Don't preload all of the file source-location entries when reading the AST file. Instead, load them lazily, when needed. - Only look up header-search information (whether a header was already #import'd, how many times it's been included, etc.) when it's needed by the preprocessor, rather than pre-populating it. Previously, we would pre-load all of the file source-location entries, which also populated the header-search information structure. This was a relatively minor performance issue, since we would end up stat()'ing all of the headers stored within a AST/PCH file when the AST/PCH file was loaded. In the normal PCH use case, the stat()s were cached, so the cost--of preloading ~860 source-location entries in the Cocoa.h case---was relatively low. However, the recent optimization that replaced stat+open with open+fstat turned this into a major problem, since the preloading of source-location entries would now end up opening those files. Worse, those files wouldn't be closed until the file manager was destroyed, so just opening a Cocoa.h PCH file would hold on to ~860 file descriptors, and it was easy to blow through the process's limit on the number of open file descriptors. By eliminating the preloading of these files, we neither open nor stat the headers stored in the PCH/AST file until they're actually needed for something. Concretely, we went from *** HeaderSearch Stats: 835 files tracked. 364 #import/#pragma once files. 823 included exactly once. 6 max times a file is included. 3 #include/#include_next/#import. 0 #includes skipped due to the multi-include optimization. 1 framework lookups. 0 subframework lookups. *** Source Manager Stats: 835 files mapped, 3 mem buffers mapped. 37460 SLocEntry's allocated, 11215575B of Sloc address space used. 62 bytes of files mapped, 0 files with line #'s computed. with a trivial program that uses a chained PCH including a Cocoa PCH to *** HeaderSearch Stats: 4 files tracked. 1 #import/#pragma once files. 3 included exactly once. 2 max times a file is included. 3 #include/#include_next/#import. 0 #includes skipped due to the multi-include optimization. 1 framework lookups. 0 subframework lookups. *** Source Manager Stats: 3 files mapped, 3 mem buffers mapped. 37460 SLocEntry's allocated, 11215575B of Sloc address space used. 62 bytes of files mapped, 0 files with line #'s computed. for the same program. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125286 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Adjust the object files to be linked in when mcount profilingRoman Divacky
is specified in the FreeBSD linker driver. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125285 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Add a testcase for the mcount profiling.Roman Divacky
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125283 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Implement mcount profiling, enabled via -pg.Roman Divacky
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125282 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Drop the 'InBits' part from the name of RecordSizeInBits as the value is inKen Dyck
character units. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125281 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Eliminate some signed-to-unsigned comparision warnings introduced inKen Dyck
r125156. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125280 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10CMake: LLVM_NO_RTTI must be obsolete now!NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125275 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Move the check that gives functions with unique-external types unique-externalJohn McCall
linkage into Decl.cpp. Disable this logic for extern "C" functions, because the operative rule there is weaker. Fixes rdar://problem/8898466 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125268 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Run ~GRState() when reclaiming GRStates.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125262 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10static analyzer: Make GRStates reference counted, with reference counts ↵Ted Kremenek
managed by ExplodedNodes. This reduces memory usage of the analyzer on sqlite by another 5%. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125260 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Add hack to CMakeLists.txt so that StaticAnalyzer libraries find their ↵Ted Kremenek
corresponding headers. This is a hack because we really should only search in the 'include/clang/StaticAnalyzer' directory if we are in 'lib/StaticAnalyzer'. My CMake knowledge is limited, so I appeal to anyone with more expertise. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125252 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Split 'include/clang/StaticAnalyzer' into ↵Ted Kremenek
'include/clang/StaticAnalyzer/Core' and 'include/clang/StaticAnalyzer/Checkers'. This layout matches lib/StaticAnalyzer, which corresponds to two StaticAnalyzer libraries. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125251 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10If an aggregate is returned as 'sret' argument then let debugger know about ↵Devang Patel
this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125249 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Update clang-wpa to pass extra argument to AnalysisManager constructor.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125235 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Add target triple.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125230 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Fix scoping of method declarations and issue Fariborz Jahanian
warning when same parameter name used multiple times. // rdar://8877730 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125229 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Parse: add support for parsing CUDA kernel callsPeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125219 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Lexer: add CUDA kernel call tokensPeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125218 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09AST, Sema, Serialization: add CUDAKernelCallExpr and related semantic actionsPeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125217 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09AST, Sema, Serialization: keep track of cudaConfigureCallPeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125216 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Do not emit AT_MIPS_linkage_name for Objective-C method static variable i.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125210 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Finish up the diagnostic client before we've torn down the ASTReader,Douglas Gregor
since the diagnostic client might poke at source locations that have not yet been deserialized. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125204 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Driver/Frontend: Wire up -mregparm=.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125201 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Non-void functions need to return some value.Nick Lewycky
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125185 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Give these little helper functions definitions so that newer gccs stopJohn McCall
complaining. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125184 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Remove vtables from the Stmt hierarchy; this was pretty easy asJohn McCall
there were only three virtual methods of any significance. The primary way to grab child iterators now is with Stmt::child_range children(); Stmt::const_child_range children() const; where a child_range is just a std::pair of iterators suitable for being llvm::tie'd to some locals. I've left the old child_begin() and child_end() accessors in place, but it's probably a substantial penalty to grab the iterators individually now, since the switch-based dispatch is kindof inherently slower than vtable dispatch. Grabbing them together is probably a slight win over the status quo, although of course we could've achieved that with vtables, too. I also reclassified SwitchCase (correctly) as an abstract Stmt class, which (as the first such class that wasn't an Expr subclass) required some fiddling in a few places. There are somewhat gross metaprogramming hooks in place to ensure that new statements/expressions continue to implement getSourceRange() and children(). I had to work around a recent clang bug; dgregor actually fixed it already, but I didn't want to introduce a selfhosting dependency on ToT. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125183 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Fix a typo in a comment in tools/clang/unittests/Frontend/Makefile.Zhanyong Wan
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125182 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Initialize 'reclaimNodes'.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125179 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09test: CMake: Be aware of LLVM_LIT_TOOLS_DIR.NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125178 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Emit debug info for objc_selector.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125163 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Correct units in comments describing Size and getSize().Ken Dyck
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125158 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09When IRgen refers to a function declaration that is not a definition,Douglas Gregor
and we later find the definition, make sure that we add the definition (not the declaration) to the list of deferred definitions to emit. Fixes PR8864. Thanks to Nick Lewycky for testing this patch out git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125157 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Convert RecordLayout::Size to CharUnits from bits. No changes toKen Dyck
functionality intended. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125156 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09static analyzer: Further reduce the analyzer's memory usage when analyzing ↵Ted Kremenek
sqlite3 by 7-10% by recylcing "uninteresting" ExplodedNodes. The optimization involves eagerly pruning ExplodedNodes from the ExplodedGraph that contain practically no difference between the predecessor and successor nodes. For example, if the state is different between a predecessor and a node, the node is left in. Only for the 'environment' component of the state do we not care if the ExplodedNodes are different. This paves the way for future optimizations where we can reclaim the environment objects. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125154 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-09Make ProgramPoint::getTag() public.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125153 91177308-0d34-0410-b5e6-96231b3b80d8