summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Don't crash on non-public referenced dtors in toplevel classes.Nico Weber2015-03-062-2/+19
| | | | | | | Fixes PR22793, a bug that caused self-hosting to fail after the innocuous r231254. See the bug for details. llvm-svn: 231451
* Windows botEnrico Granata2015-03-061-0/+1
| | | | llvm-svn: 231450
* Provide synthetic children for some vector typesEnrico Granata2015-03-0610-1/+384
| | | | | | | | | | Unlike GDB, we tackle the problem of representing vector types in different styles by having a synthetic child provider that recognizes the format you're trying to apply to the variable, and coming up with the right type and number of child values to match that format This makes for a more compact representation and less visual noise Fixes rdar://5429347 llvm-svn: 231449
* [llgo] Disable known failing packages in check-libgoAndrew Wilkins2015-03-064-4/+42
| | | | | | | | | | | | | | | | | | | | | Summary: There are two packages in libgo which have known failures when running the "make check" rule. This change disables those packages in the tests so that we can run libgo tests without them until the root causes are identified and resolved. Test Plan: ran check-libgo rule Reviewers: pcc Reviewed By: pcc Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D8003 llvm-svn: 231448
* [objc-arc] Sprinkle some more auto on some iterators.Michael Gottesman2015-03-061-8/+4
| | | | llvm-svn: 231447
* [objc-arc] Move the detection of potential uses or altering of a ref count ↵Michael Gottesman2015-03-063-108/+171
| | | | | | onto PtrState. llvm-svn: 231446
* We want to add the entry point to the root set unconditionally, but theseDavide Italiano2015-03-061-6/+1
| | | | | | | asserts don't allow us to do it. Remove them, they're not really needed anyway. llvm-svn: 231445
* Remove unused function.Rui Ueyama2015-03-062-7/+0
| | | | llvm-svn: 231444
* LegalizeTypes: Handle shift by 0 in ExpandShiftByConstant.Michael Zolotukhin2015-03-062-1/+20
| | | | | | | Though such shifts are usually optimized away by combiner, we still can encounter them after a vector shift is legalized. llvm-svn: 231443
* Remember to move a type to the correct set when setting the body.Rafael Espindola2015-03-065-0/+35
| | | | | | | | | We would set the body of a struct type (therefore making it non-opaque) but were forgetting to move it to the non-opaque set. Fixes pr22807. llvm-svn: 231442
* Bump major vers # in xcode project file from 330 to 340.Jason Molenda2015-03-065-39/+39
| | | | llvm-svn: 231441
* Renamed function to avoid confusion about purpose.John Thompson2015-03-061-3/+5
| | | | llvm-svn: 231440
* [objc-arc] Move the checking of whether or not we can match onto PtrStates ↵Michael Gottesman2015-03-063-51/+76
| | | | | | | | | | | and out of the main dataflow. These refactored computations check whether or not we are at a stage of the sequence where we can perform a match. This patch moves the computation out of the main dataflow and into {BottomUp,TopDown}PtrState. llvm-svn: 231439
* [objc-arc] Refactor (Re-)initialization of PtrState from dataflow -> ↵Michael Gottesman2015-03-063-47/+64
| | | | | | | | | | {TopDown,BottomUp}PtrState Class. This initialization occurs when we see a new retain or release. Before we performed the actual initialization inline in the dataflow. That is just messy. llvm-svn: 231438
* [objc-arc] Create two subclasses of PtrState in preparation for moving per ↵Michael Gottesman2015-03-062-43/+60
| | | | | | | | | | | ptr state change behavior onto a PtrState class. This will enable the main ObjCARCOpts dataflow to work with higher level concepts such as "can this ptr state be modified by this ref count" and not need to understand the nitty gritty details of how that is determined. This makes the dataflow cleaner. llvm-svn: 231437
* [objc-arc] Extract out MDNodes into a cache structure so the information can ↵Michael Gottesman2015-03-062-22/+33
| | | | | | be passed around. llvm-svn: 231436
* [objc-arc] Remove annotations code.Michael Gottesman2015-03-062-410/+0
| | | | | | | It will always be in the history if it is needed again. Now it is just dead code. llvm-svn: 231435
* Core: Make the resolver faster.Rui Ueyama2015-03-0611-73/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the resolver, we maintain a list of undefined symbols, and when we visit an archive file, we check that file if undefined symbols can be resolved using files in the archive. The archive file class provides find() function to lookup a symbol. Previously, we call find() for each undefined symbols. Archive files may be visited multiple times if they are in a --start-group and --end-group. If we visit a file M times and if we have N undefined symbols, find() is called M*N times. I found that that is one of the most significant bottlenecks in LLD when linking a large executable. find() is not a very cheap operation because it looks up a hash table for a given string. And a string, or a symbol name, can be pretty long if you are dealing with C++ symbols. We can eliminate the bottleneck. Calling find() with the same symbol multiple times is a waste. If a result of looking up a symbol is "not found", it stays "not found" forever because the symbol simply doesn't exist in the archive. Thus, we should call find() only for newly-added undefined symbols. This optimization makes O(M*N) O(N). In this patch, all undefined symbols are added to a vector. For each archive/shared library file, we maintain a start position P. All symbols [0, P) are already searched. [P, end of the vector) are not searched yet. For each file, we scan the vector only once. This patch changes the order in which undefined symbols are looked for. Previously, we iterated over the result of _symbolTable.undefines(). Now we iterate over the new vector. This is a benign change but caused differences in output if remaining undefines exist. This is why some tests are updated. The performance improvement of this patch seems sometimes significant. Previously, linking chrome.dll on my workstation (Xeon 2.4GHz 8 cores) took about 70 seconds. Now it takes (only?) 30 seconds! http://reviews.llvm.org/D8091 llvm-svn: 231434
* Teach ComputeNumSignBits about signed reminder.Nadav Rotem2015-03-062-1/+48
| | | | | | This optimization a continuation of r231140 that reasoned about signed div. llvm-svn: 231433
* Optimize resolver by using std::unordered_multimap.Rui Ueyama2015-03-062-3/+8
| | | | | | | | | | | | | | | | | _reverseRef is a multimap from atoms to atoms. The map contains reverse edges of "layout-before" and "group" edges for dead-stripping. The type of the variable was DenseMap<Atom *, DenseSet<Atom *>>. This patch changes that to std::unordered_multimap<Atom *, Atom *>. A DenseMap with a value type of DenseSet was not fast. Inserting 900k items to the map took about 1.6 seconds on my workstation. unordered_multimap on the other hand took only 0.6 seconds. Use of the map also got faster -- originally markLive took 1.3 seconds in the same test case, and it now took 1.0 seconds. In total we shove off 1.3 seconds out of 27 seconds in that test case. llvm-svn: 231432
* Add a download link to the web page (PR22764)Hans Wennborg2015-03-061-0/+1
| | | | llvm-svn: 231431
* Fix build error.Michael Gottesman2015-03-052-21/+29
| | | | llvm-svn: 231430
* Add a symbolizer testcase for closed stdin/stdoutKuba Brecka2015-03-051-0/+30
| | | | | | Reviewed at http://reviews.llvm.org/D7973 llvm-svn: 231429
* Print out which symbolizer are we using when verbosity >= 2Kuba Brecka2015-03-051-0/+6
| | | | | | Reviewed at http://reviews.llvm.org/D8087 llvm-svn: 231428
* [objc-arc] Change some casts and loop iterators to use auto.Michael Gottesman2015-03-051-16/+12
| | | | llvm-svn: 231427
* [objc-arc] Extract out state specific to a ref count from the main objc arc ↵Michael Gottesman2015-03-054-287/+298
| | | | | | sequence dataflow. This will allow me to separate the actual ARC queries from the meat of the dataflow algorithm. llvm-svn: 231426
* [objc-arc] Extract blot map vector into its own file. NFC.Michael Gottesman2015-03-052-160/+151
| | | | llvm-svn: 231425
* [modules] Rework merging of redeclaration chains on module import.Richard Smith2015-03-0512-194/+146
| | | | | | | | | | | | | | | | | | | | | | We used to save out and eagerly load a (potentially huge) table of merged formerly-canonical declarations when we loaded each module. This was extremely inefficient in the presence of large amounts of merging, and didn't actually save any merging lookup work, because we still needed to perform name lookup to check that our merged declaration lists were complete. This also resulted in a loss of laziness -- even if we only needed an early declaration of an entity, we would eagerly pull in all declarations that had been merged into it regardless. We now store the relevant fragments of the table within the declarations themselves. In detail: * The first declaration of each entity within a module stores a list of first declarations from imported modules that are merged into it. * Loading that declaration pre-loads those other entities, so that they appear earlier within the redeclaration chain. * The name lookup tables list the most recent local lookup result, if there is one, or all directly-imported lookup results if not. llvm-svn: 231424
* Remove libedit and libncurses from LLDB_SYSTEM_LIBS if they're disabled.Chaoren Lin2015-03-051-1/+6
| | | | | | | | | | Reviewers: clayborg, zturner, vharron, sbest Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D8065 llvm-svn: 231423
* [X86] Remove stale comment. NFC.Ahmed Bougacha2015-03-051-1/+0
| | | | | | | | It turns out 256bit V[SZ]EXT nodes are still generated by the new shuffle lowering, so this is here to stay! llvm-svn: 231422
* Use std::string instead of StringRef to prevent use-after-free.Daniel Jasper2015-03-051-1/+1
| | | | | | Discovered by asan. llvm-svn: 231421
* When we have a symbol, like "NSLog" that we try to call in an expression, ↵Greg Clayton2015-03-051-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | make sure we prioritize the external symbols over the internal one. This is a temporary fix until a more comprehensive fix can be made for finding functions that we call in expressions. We find "NSLog" in ClangExpressionDeclMap::FindExternalVisibleDecls() in after a call to target->GetImages().FindFunctions(...). Note that there are two symbols: NSLog from CFNetwork which is not external, and NSLog from Foundation which _is_ external. We do something with the external symbol with: if (extern_symbol) { AddOneFunction (context, NULL, extern_symbol, current_id); context.m_found.function = true; } Then later we try to lookup the _Z5NSLogP8NSStringz name and we don't find it so we call ClangExpressionDeclMap::GetFunctionAddress() with "_Z5NSLogP8NSStringz" as the name and the sc_list_size is zero at the "if" statement at line 568 because we don't find the mangled name and we extract the basename "NSLog" and call: FindCodeSymbolInContext(ConstString(basename), m_parser_vars->m_sym_ctx, sc_list); sc_list_size = sc_list.GetSize(); and we get a list size of two again, and we proceed to search for the symbol again, this time ignoring the external vs non-external-ness of the symbols that we find. This fix ensures we prioritize the external symbol until we get a real fix from Sean Callanan when he gets back to make sure we don't do multiple lookups for the same symbol we already resolved. <rdar://problem/19879282> llvm-svn: 231420
* [PATCH] Patch to fix the AST for vector splat from any Fariborz Jahanian2015-03-052-2/+31
| | | | | | | | arithmetic type to a vector so that the arithmatic type matches the vector element type. Without which it crashes in Code Gen. rdar://20000762 llvm-svn: 231419
* All FileCheck directives allow patterns.Paul Robinson2015-03-051-1/+1
| | | | llvm-svn: 231418
* Fix test to use explicit load type.Peter Collingbourne2015-03-051-1/+1
| | | | llvm-svn: 231417
* Go bindings: use MDNode::replaceAllUsesWith instead of ↵Peter Collingbourne2015-03-051-3/+2
| | | | | | | | | MDTuple::replaceAllUsesWith. Fixes llgo following Duncan's changes to debug info in r231082. llgo needs to replace composite types, which are no longer represented using MDTuple. llvm-svn: 231416
* symbolicate the application specific backtraces that are in MacOSX crash log ↵Greg Clayton2015-03-052-77/+127
| | | | | | | | files. <rdar://problem/20039160> llvm-svn: 231415
* [RewriteStatepointsForGC] Yet more test cases for relocationPhilip Reames2015-03-051-2/+174
| | | | | | | | At this point, we should have decent coverage of the involved code. I've got a few more test cases to cleanup and submit, but what's here is already reasonable. I've got a collection of liveness tests which will be posted for review along with a decent liveness algorithm in the next few days. Once those are in, the code in this file should be well tested and I can start renaming things without risk of serious breakage. llvm-svn: 231414
* [sanitizer] Reconstruct the function that dumps block/edge coverage, ↵Kostya Serebryany2015-03-054-80/+83
| | | | | | hopefully making it more robust. Also increase the allowed coverage size on 32-bit. llvm-svn: 231413
* [CODE_OWNERS] Change the ownership of register allocators.Quentin Colombet2015-03-051-1/+5
| | | | llvm-svn: 231412
* Instructions: Use delegated constructors to reduce duplicationBenjamin Kramer2015-03-051-153/+32
| | | | | | NFC. llvm-svn: 231411
* Revert "[UBSan] Add testcases for -fsanitize=shift-base and ↵Alexey Samsonov2015-03-052-22/+14
| | | | | | | | -fsanitize=shift-exponent." The test case fails on AArch64. llvm-svn: 231410
* Revert "[UBSan] Split -fsanitize=shift into -fsanitize=shift-base and ↵Alexey Samsonov2015-03-057-60/+54
| | | | | | | | | | | -fsanitize=shift-exponent." It's not that easy. If we're only checking -fsanitize=shift-base we still need to verify that exponent has sane value, otherwise UBSan-inserted checks for base will contain undefined behavior themselves. llvm-svn: 231409
* [AVX] Lower / fast-isel scalar FP selects into VBLENDV instructions (PR22483)Sanjay Patel2015-03-053-93/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch reduces code size for all AVX targets and increases speed for some chips. SSE 4.1 introduced the useless (see code comments) 2-register form of BLENDV and only in the packed float/double flavors. AVX subsequently made the instruction useful by adding a 4-register operand form. So we just need to paper over the lack of scalar forms of this instruction, complicate the code to choose float or double forms, and use blendv on scalars since all FP is in xmm registers anyway. This gives us an approximately 50% speed up for a blendv microbenchmark sequence on SandyBridge and Haswell: blendv : 29.73 cycles/iter logic : 43.15 cycles/iter No new test cases with this patch because: 1. fast-isel-select-sse.ll tests the positive side for regular X86 lowering and fast-isel 2. sse-minmax.ll and fp-select-cmp-and.ll confirm that we're not firing for scalar selects without AVX 3. fp-select-cmp-and.ll and logical-load-fold.ll confirm that we're not firing for scalar selects with constants. http://llvm.org/bugs/show_bug.cgi?id=22483 Differential Revision: http://reviews.llvm.org/D8063 llvm-svn: 231408
* XFAIL tests that are known to fail occasionally on LinuxVince Harron2015-03-058-0/+11
| | | | | | | | Trying to get the build green so we can notice new failures easier. Differential Revision: http://reviews.llvm.org/D8039 llvm-svn: 231407
* SelectionDAGBuilder: Merge 3 copies of the limited precision exp2 emission code.Benjamin Kramer2015-03-051-251/+93
| | | | | | NFC intended. llvm-svn: 231406
* Fix uninitialized memory references in WinEHPrepareAndrew Kaylor2015-03-051-1/+3
| | | | llvm-svn: 231405
* Run ShTests when the executor is an instance of LocalExecutorEric Fiselier2015-03-051-1/+3
| | | | llvm-svn: 231404
* Early return. NFC.Rui Ueyama2015-03-051-31/+30
| | | | llvm-svn: 231403
* Move use of __builtin_longjmp under the same conditions as the onlyJoerg Sonnenberger2015-03-051-9/+9
| | | | | | caller of the function. llvm-svn: 231402
OpenPOWER on IntegriCloud