summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Tweak the guidelines for when one should send patches to cfe-commits vs. cfe-devDouglas Gregor2011-11-191-5/+4
| | | | llvm-svn: 145000
* Custom lower AVX2 variable shift intrinsics to shl/srl/sra nodes and remove ↵Craig Topper2011-11-192-74/+42
| | | | | | the intrinsic patterns. llvm-svn: 144999
* Fixed HadMultipleCandidates loading.Abramo Bagnara2011-11-194-44/+68
| | | | llvm-svn: 144995
* Move the handling of unanalyzable branches out of the loop-driven chainChandler Carruth2011-11-192-25/+58
| | | | | | | | | | | | | | | | | | | | | | | | formation phase and into the initial walk of the basic blocks. We essentially pre-merge all blocks where unanalyzable fallthrough exists, as we won't be able to update the terminators effectively after any reorderings. This is quite a bit more principled as there may be CFGs where the second half of the unanalyzable pair has some analyzable predecessor that gets placed first. Then it may get placed next, implicitly breaking the unanalyzable branch even though we never even looked at the part that isn't analyzable. I've included a test case that triggers this (thanks Benjamin yet again!), and I'm hoping to synthesize some more general ones as I dig into related issues. Also, to make this new scheme work we have to be able to handle branches into the middle of a chain, so add this check. We always fallback on the incoming ordering. Finally, this starts to really underscore a known limitation of the current implementation -- we don't consider broken predecessors when merging successors. This can caused major missed opportunities, and is something I'm planning on looking at next (modulo more bug reports). llvm-svn: 144994
* Driver: Remove the signal number from the "command failed" diagnostic.Benjamin Kramer2011-11-192-2/+2
| | | | | | | - With the current implementation of sys::Program this always printed "2". - The command execution code will output the right number anyway (including the signal name). llvm-svn: 144993
* Initialize ImplicitConversionSequence::ListInitializationSequence. Fixes PR11394Douglas Gregor2011-11-191-2/+4
| | | | llvm-svn: 144992
* Add missing initialization in the ContentCache. Seriously, when doDouglas Gregor2011-11-191-25/+25
| | | | | | constructors go below public member functions? llvm-svn: 144991
* Test cases for SSSE3/AVX integer horizontal add/sub.Craig Topper2011-11-191-0/+170
| | | | llvm-svn: 144990
* Synthesize SSSE3/AVX 128-bit horizontal integer add/sub instructions from ↵Craig Topper2011-11-194-3/+62
| | | | | | add/sub of appropriate shuffle vectors. llvm-svn: 144989
* Collapse X86 PSIGNB/PSIGNW/PSIGND node types.Craig Topper2011-11-194-33/+18
| | | | llvm-svn: 144988
* Extend VPBLENDVB and VPSIGN lowering to work for AVX2.Craig Topper2011-11-194-111/+156
| | | | llvm-svn: 144987
* Remove some unnecessary filtering checks from X86 disassembler table build.Craig Topper2011-11-191-35/+8
| | | | llvm-svn: 144986
* Remove unused parameters from the AVX maskmov classes.Craig Topper2011-11-191-12/+6
| | | | llvm-svn: 144985
* Pulled in a new revision of LLVM/Clang and addedSean Callanan2011-11-1912-76/+155
| | | | | | | | | | | | | several patches. These patches fix a problem where templated types were not being completed the first time they were used, and fix a variety of minor issues I discovered while fixing that problem. One of the previous local patches was resolved in the most recent Clang, so I removed it. The others will be removed in due course. llvm-svn: 144984
* Further performance improvements in the DWARF parser:Greg Clayton2011-11-195-138/+135
| | | | | | | | | 1 - the DIE collections no longer have the NULL tags which saves up to 25% of the memory on typical C++ code 2 - faster parsing by not having to run the SetDIERelations() function anymore it is done when parsing the DWARF very efficiently. llvm-svn: 144983
* Ensure that the empty RecordDecl generated forSean Callanan2011-11-191-2/+6
| | | | | | | templates is properly complete (though still empty). llvm-svn: 144982
* Handle stepping through a trampoline where the jump target is calculated a ↵Jim Ingham2011-11-195-31/+149
| | | | | | | | | | runtime - and so doesn't match the name of the PLT entry. This solution assumes a naming convention agreed upon by us and the system folks, and isn't general. The general solution requires actually finding & calling the resolver function if it hasn't been called yet. That's more tricky. llvm-svn: 144981
* Enable delayed template parsing for friend functions declared at template ↵Francois Pichet2011-11-182-2/+5
| | | | | | class scope. llvm-svn: 144980
* Fixed implicit instantiations source range.Abramo Bagnara2011-11-182-1/+6
| | | | llvm-svn: 144977
* Added optional calls to lldb_private::Process for getting memory region infoGreg Clayton2011-11-1817-56/+292
| | | | | | | | | | | | | | | | | | | | | | | from a process and hooked it up to the new packet that was recently added to our GDB remote executable named debugserver. Now Process has the following new calls: virtual Error Process::GetMemoryRegionInfo (lldb::addr_t load_addr, MemoryRegionInfo &range_info); virtual uint32_t GetLoadAddressPermissions (lldb::addr_t load_addr); Only the first one needs to be implemented by subclasses that can add this support. Cleaned up the way the new packet was implemented in debugserver to be more useful as an API inside debugserver. Also found an error where finding a region for an address actually will pick up the next region that follows the address in the query so we also need ot make sure that the address we requested the region for falls into the region that gets returned. llvm-svn: 144976
* Looking at our memory usage with Instruments when debugging a large applicationGreg Clayton2011-11-184-286/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | we say that the vectors of DWARFDebugInfoEntry objects were the highest on the the list. With these changes we cut our memory usage by 40%!!! I did this by reducing the size of the DWARFDebugInfoEntry from a previous: uint32_t offset uint32_t parent_idx uint32_t sibling_idx Abbrev * abbrev_ptr which was 20 bytes, but rounded up to 24 bytes due to alignment. Now we have: uint32_t offset uint32_t parent_idx uint32_t sibling_idx uint32_t abbr_idx:15, // 32767 possible abbreviation codes has_children:1, // 0 = no children, 1 = has children tag:16; // DW_TAG_XXX value This gets us down to 16 bytes per DIE. I tested some VERY large DWARF files (900MB) and found there were only ~700 unique abbreviations, so 32767 should be enough for any sane compiler. If it isn't there are built in assertions that will fire off and tell us. llvm-svn: 144975
* Refine placement of LangOptions object in CompilerInvocation by adding a new ↵Ted Kremenek2011-11-183-16/+20
| | | | | | baseclass CompilerInvocationBase with a custom copy constructor. This ensures that whenever the CompilerInvocation object's copy constructor is used we always clone the LangOptions object. llvm-svn: 144973
* Finish r144971, which was an incomplete commit.Eli Friedman2011-11-182-2/+2
| | | | llvm-svn: 144972
* Fix the meaning of an "empty" record for the case of a zero-length array. ↵Eli Friedman2011-11-182-3/+15
| | | | | | Use isEmptyRecord for arguments on x86-32; there are structs of size 0 which don't count as empty. llvm-svn: 144971
* Fix a corner case in updating LoopInfo after fully unrolling an outer loop.Andrew Trick2011-11-182-11/+50
| | | | | | | | | | | The loop tree's inclusive block lists are painful and expensive to update. (I have no idea why they're inclusive). The design was supposed to handle this case but the implementation missed it and my unit tests weren't thorough enough. Fixes PR11335: loop unroll update. llvm-svn: 144970
* This commit completes the rearchitecting of ClangASTSourceSean Callanan2011-11-188-51/+261
| | | | | | | | | | | | | | | | | | | | | to allow variables in the persistent variable store to know how to complete themselves from debug information. That fixes a variety of bugs during dematerialization of expression results and also makes persistent variable and result variables ($foo, $4, ...) more useful. I have also added logging improvements that make it much easier to figure out how types are moving from place to place, and made some checking a little more aggressive. The commit includes patches to Clang which are currently being integrated into Clang proper; once these fixes are in Clang top-of-tree, these patches will be removed. The patches don't fix API; rather, they fix some internal bugs in Clang's ASTImporter that were exposed when LLDB was moving types from place to place multiple times. llvm-svn: 144969
* Add AVX2 vpbroadcast supportNadav Rotem2011-11-183-28/+204
| | | | llvm-svn: 144967
* Make va_arg on x86-64 compute alignment the same way as argument passing.Eli Friedman2011-11-182-7/+19
| | | | | | Fixes <rdar://problem/10463281>. llvm-svn: 144966
* [analyzer] Warn when non pointer arguments are passed to scanf (only when ↵Anna Zaks2011-11-183-5/+40
| | | | | | | | running taint checker). There is an open radar to implement better scanf checking as a Sema warning. However, a bit of redundancy is fine in this case. llvm-svn: 144964
* A bunch of fixes to argument passing and va_arg on Darwin x86-32 for ↵Eli Friedman2011-11-182-3/+45
| | | | | | structures containing an SSE vector. llvm-svn: 144963
* [asan] workaround for reg alloc bug 11395: don't instrument functions with ↵Kostya Serebryany2011-11-182-0/+84
| | | | | | large chunks of inline assembler llvm-svn: 144962
* Don't try to expand struct arguments containing holes on x86-32. From gcc ↵Eli Friedman2011-11-182-0/+12
| | | | | | struct layout tests. llvm-svn: 144961
* Simplify code for returning a struct for Darwin x86-32 ABI. Use a better ↵Eli Friedman2011-11-183-44/+23
| | | | | | type for a function returning a struct containing only a pointer. Handle the edge case of a struct containing only a float or double plus some dead padding instead of asserting. llvm-svn: 144960
* Guard call to getRegForValue with isTypeLegal check to avoid unnecessary ↵Chad Rosier2011-11-181-3/+5
| | | | | | work/dead code. llvm-svn: 144959
* Redirect the stderr output into a file so as to not pollute the terminal.Johnny Chen2011-11-181-3/+8
| | | | llvm-svn: 144958
* c-index-test.c: Fix syntax according to C.NAKAMURA Takumi2011-11-181-1/+1
| | | | llvm-svn: 144947
* [analyzer] The compiler warning was disabling the analyzer in this test.Anna Zaks2011-11-181-1/+1
| | | | llvm-svn: 144946
* Do not print debug messages if self.TraceON() is False.Johnny Chen2011-11-181-4/+10
| | | | llvm-svn: 144945
* Ignore empty unions in argument lowering on x86-32. From gcc struct layout ↵Eli Friedman2011-11-182-2/+6
| | | | | | tests. llvm-svn: 144944
* Change ASTConsumer::HandleTopLevelDecl to return true for the parser to continueArgyrios Kyrtzidis2011-11-1811-17/+35
| | | | | | parsing or false to abort parsing. llvm-svn: 144943
* [libclang] Indexing API:Argyrios Kyrtzidis2011-11-1811-164/+396
| | | | | | | | | -For indexDeclaration, also pass the declaration attributes as an array of cursors. -Rename CXIndexOpt_OneRefPerFile -> CXIndexOpt_SuppressRedundantRefs, and only pass a reference if a declaration/definition does not exist in the file. -Other fixes. llvm-svn: 144942
* [libclang] Indexing API: make sure we don't pass declarations/references ↵Argyrios Kyrtzidis2011-11-181-7/+13
| | | | | | without USR or location. llvm-svn: 144941
* Add a simple progress bar when neither '-v' nor '-t' is specified.Johnny Chen2011-11-181-5/+22
| | | | llvm-svn: 144940
* Use the canonical decl to index so that we can really find it later.Eric Christopher2011-11-171-4/+4
| | | | | | Fixes rdar://10433202 llvm-svn: 144938
* DISubrange supports unsigned lower/upper array bounds, so let's not fake it ↵Devang Patel2011-11-173-6/+43
| | | | | | in the end while emitting DWARF. If a FE needs to encode signed lower/upper array bounds then we need to extend DISubrange or ad DISignedSubrange. llvm-svn: 144937
* quick fix: remove GlobalVariable::GlobalVariable mistakenly commited at ↵Kostya Serebryany2011-11-171-3/+3
| | | | | | r144933. For some reason this compiles on linux llvm-svn: 144936
* Fix an overly general check in SimplifyIndvar to handle useless phi cycles.Andrew Trick2011-11-172-2/+31
| | | | | | | | | | | | | | The right way to check for a binary operation is cast<BinaryOperator>. The original check: cast<Instruction> && numOperands() == 2 would match phi "instructions", leading to an infinite loop in extreme corner case: a useless phi with operands [self, constant] that prior optimization passes failed to remove, being used in the loop by another useless phi, in turn being used by an lshr or udiv. Fixes PR11350: runaway iteration assertion. llvm-svn: 144935
* Added a clause to the ASTImporter allowing it toSean Callanan2011-11-171-0/+10
| | | | | | import TranslationUnitDecls. llvm-svn: 144934
* fall back to explicit list of allowed linkages when instrumenting globals in ↵Kostya Serebryany2011-11-172-2/+11
| | | | | | asan; add a test check that asan does not touch linkonce_odr llvm-svn: 144933
* [analyzer] Do not conjure a symbol when we need to propagate taint.Anna Zaks2011-11-175-10/+64
| | | | | | | | | | When the solver and SValBuilder cannot reason about symbolic expressions (ex: (x+1)*y ), the analyzer conjures a new symbol with no ties to the past. This helps it to recover some path-sensitivity. However, this breaks the taint propagation. With this commit, we are going to construct the expression even if we cannot reason about it later on if an operand is tainted. Also added some comments and asserts. llvm-svn: 144932
OpenPOWER on IntegriCloud