summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [tsan] Rename tsan_test_util_linux.cc to tsan_test_util_posix.ccKuba Brecka2015-11-112-2/+2
| | | | | | Differential Revision: http://reviews.llvm.org/D14575 llvm-svn: 252741
* [ARM] Combine BFIs togetherJames Molloy2015-11-112-2/+148
| | | | | | If we have a chain of BFIs, we may be able to combine several together into one merged BFI. We can do this if the "from" bits from one BFI OR'd with the "from" bits from the other BFI form a contiguous range, and the same with the "to" bits. llvm-svn: 252740
* Replace size_t with uintX_t in a few places.Rafael Espindola2015-11-112-3/+3
| | | | | | If linking a 32 bit binary, these values must fit in 32 bits. llvm-svn: 252739
* Implement some TLS support for PowerPC64.Jay Foad2015-11-113-8/+34
| | | | | | | | | | | | Summary: This is enough to get the asan static_tls.cc test case working. Reviewers: eugenis, samsonov Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14574 llvm-svn: 252738
* Remove const from a few places. NFC.Rafael Espindola2015-11-112-6/+5
| | | | | | This just reduces the noise from an upcoming patch. llvm-svn: 252737
* Remove unnecessary this->. NFC.Rafael Espindola2015-11-111-2/+2
| | | | llvm-svn: 252736
* Fixing #include order in tsan_new_delete.cc. Follow-up commit for r252284.Kuba Brecka2015-11-111-1/+1
| | | | llvm-svn: 252735
* [SLP] Enable -slp-vectorize-hor by default.Charlie Turner2015-11-111-1/+1
| | | | | | | | | | | Measurements primarily on AArch64 have shown this feature does not significantly effect compile-time. The are no significant perf changes in LNT, but for AArch64 at least, there are wins in third party benchmarks. As discussed on llvm-dev, we're going to try turning this on by default and see how other targets react to the change. llvm-svn: 252733
* Silencing a signed vs unsigned type mismatch warning.Aaron Ballman2015-11-111-1/+1
| | | | llvm-svn: 252732
* [tsan] Add TSan unit test support for OS XKuba Brecka2015-11-119-40/+103
| | | | | | | | This patch enables building and running TSan unit tests on OS X. Differential Revision: http://reviews.llvm.org/D14546 llvm-svn: 252731
* Fix #if tests for PTRACE_GETREGS and others.Jay Foad2015-11-111-3/+6
| | | | | | | | | | | | | | | | | | Summary: On PowerPC64 Linux PTRACE_GETREGS is a #define and PT_GETREGS is not. On other systems it's the other way round. Extend the #ifs to check for both PTRACE_* and PT_*. This fixes test/sanitizer_common/TestCases/Linux/ptrace.cc when msan is enabled for PowerPC64. Reviewers: zatrazz, kcc, eugenis, samsonov Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14564 llvm-svn: 252730
* [ASan] Add stress test for asynch signals in nonhalting mode.Yury Gribov2015-11-111-0/+106
| | | | | | Differential Revision: http://reviews.llvm.org/D14241 llvm-svn: 252729
* Silencing nine warnings for "enumeral and non-enumeral type in conditional ↵Aaron Ballman2015-11-111-10/+18
| | | | | | expression"; NFC. llvm-svn: 252728
* Silencing a -Wreturn-type warning for control reaching the end of a non-void ↵Aaron Ballman2015-11-111-0/+1
| | | | | | function. llvm-svn: 252727
* ScopDetection: Tighten the check for always executed 'error blocks'Tobias Grosser2015-11-112-1/+70
| | | | | | | | | Basic blocks that are always executed can not be error blocks as their execution can not possibly be an unlikely event. In this commit we tighten the check if an error block to basic blcoks that do not dominate the exit condition, but that dominate all exiting blocks of the scop. llvm-svn: 252726
* ScopDetection: Do not allow blocks to reference operands in error blocksTobias Grosser2015-11-113-0/+67
| | | | | | | | | | | | | r252713 introduced a couple of regressions due to later basic blocks refering to instructions defined in error blocks which have not yet been modeled. This commit is currently just encoding limitations of our modeling and code generation backends to ensure correctness. In theory, we should be able to generate and optimize such regions, as everything that is dominated by an error region is assumed to not be executed anyhow. We currently just lack the code to make this happen in practice. llvm-svn: 252725
* [Asan] Added missing hunk to previous commit.Yury Gribov2015-11-111-7/+2
| | | | llvm-svn: 252724
* [ASan] Enable optional ASan recovery.Yury Gribov2015-11-1110-88/+320
| | | | | | Differential Revision: http://reviews.llvm.org/D12318 llvm-svn: 252723
* [X86] Replace LEAs with INC/DEC when profitableMichael Kuperstein2015-11-113-9/+114
| | | | | | | | | If possible and profitable, replace lea %reg, 1(%reg) and lea %reg, -1(%reg) with inc %reg and dec %reg respectively. Patch by: anton.nadolsky@intel.com Differential Revision: http://reviews.llvm.org/D14059 llvm-svn: 252722
* [ASan] Allow -fsanitize-recover=address.Yury Gribov2015-11-114-19/+29
| | | | | | Differential Revision: http://reviews.llvm.org/D14243 llvm-svn: 252721
* Make test/Driver/biarch.c use FileCheck instead of grepArtyom Skrobov2015-11-111-36/+24
| | | | | | | | | | | | | | Summary: For clarity and ease of maintenance, I suggest porting this test to use the same tooling as the rest of the tests. Reviewers: joerg, rengolin, dougk, yaron.keren Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D14548 llvm-svn: 252720
* [ASan] Enable optional ASan recovery.Yury Gribov2015-11-113-20/+51
| | | | | | Differential Revision: http://reviews.llvm.org/D14242 llvm-svn: 252719
* Don't pass a member variable to a method. NFC.Rafael Espindola2015-11-112-10/+7
| | | | llvm-svn: 252718
* Move relocate to the base class.Rafael Espindola2015-11-112-12/+11
| | | | | | | This is in preparation for adding .eh_frame support. They will have another input section type but will also need to be relocated. llvm-svn: 252717
* Simplify. NFC.Rafael Espindola2015-11-111-2/+1
| | | | llvm-svn: 252716
* sanitizer: speedup coverage by 33%Dmitry Vyukov2015-11-111-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Atomic RMW is not necessary in InitializeGuardArray. It is supposed to run when no user code runs. And if user code runs concurrently, then the atomic RMW won't help anyway. So replace it with non-atomic RMW. InitializeGuardArray takes more than 50% of time during re2 fuzzing: real 0m47.215s 51.56% a.out a.out [.] __sanitizer_reset_coverage 6.68% a.out a.out [.] __sanitizer_cov 3.41% a.out a.out [.] __sanitizer::internal_bzero_aligned16(void*, unsigned long) 1.79% a.out a.out [.] __asan::Allocator::Allocate(unsigned long, unsigned long, With this change: real 0m31.661s 26.21% a.out a.out [.] sanitizer_reset_coverage 10.12% a.out a.out [.] sanitizer_cov 5.38% a.out a.out [.] __sanitizer::internal_bzero_aligned16(void*, unsigned long) 2.53% a.out a.out [.] __asan::Allocator::Allocate(unsigned long, unsigned long, That's 33% speedup. Reviewed in http://reviews.llvm.org/D14537 llvm-svn: 252715
* test: Shorten test case to reduce 'make polly-check' timeTobias Grosser2015-11-111-113/+13
| | | | | | | | | Thinking more about the last commit I came to realize that for testing the new functionality it is sufficient to verify that the iteration domains we construct for a simple test case do not contain any of the complexity that caused compile time issues for larger inputs. llvm-svn: 252714
* ScopInfo: Pass domain constraints through error blocksTobias Grosser2015-11-115-28/+263
| | | | | | | | | | | | | | | | | | | | | | | | | Previously, we just skipped error blocks during scop construction. With this change we make sure we can construct domains for error blocks such that these domains can be forwarded to subsequent basic blocks. This change ensures that basic blocks that post-dominate and are dominated by a basic block that branches to an error condition have the very same iteration domain as the branching basic block. Before, this change we would construct a domain that excludes all error conditions. Such domains could become _very_ complex and were undesirable to build. Another solution would have been to drop these constraints using a dominance/post-dominance check instead of modeling the error blocks. Such a solution could also work in case of unreachable statements or infinite loops in the scop. However, as we currently (to my believe incorrectly) model unreachable basic blocks in the post-dominance tree, such a solution is not yet feasible and requires first a change to LLVM's post-dominance tree construction. This commit addresses the most sever compile time issue reported in: http://llvm.org/PR25458 llvm-svn: 252713
* [X86] Add 'pause' builtin that's already in llvm and use it instead of ↵Craig Topper2015-11-113-1/+8
| | | | | | inline assembly to implement _mm_pause. llvm-svn: 252712
* [X86] Use __builtin_ia32_paddq and __builtin_ia32_psubq to implement a ↵Craig Topper2015-11-112-2/+20
| | | | | | couple intrinsics that were supposed to operate on MMX registers. Otherwise we end up operating on GPRs. Throw in a test for _mm_mul_su32 while I was there. llvm-svn: 252711
* [X86] Header formatting fixes. NFCCraig Topper2015-11-112-2/+2
| | | | llvm-svn: 252710
* [X86] Fix feature flags on some MMX register instructions that really were ↵Craig Topper2015-11-111-2/+13
| | | | | | introduced with SSE or SSE2. llvm-svn: 252709
* [X86] Remove redundant MMX isel patterns.Craig Topper2015-11-111-4/+0
| | | | llvm-svn: 252708
* Marked test_qRegisterInfo_returns_{one_valid_result,all_valid_results} XFAIL ↵Todd Fiala2015-11-111-0/+2
| | | | | | | | | on Darwin. Tracked by: https://llvm.org/bugs/show_bug.cgi?id=25486 llvm-svn: 252707
* [FIX] Cast pre-loaded values correctly or reload them with adjusted type.Johannes Doerfert2015-11-117-22/+113
| | | | | | | | | | | | | Especially for structs, the SAI object of a base pointer does not describe all the types that the user might expect when he loads from that base pointer. While we will still cast integers and pointers we will now reload the value with the correct type if floating point and non-floating point values are involved. However, there are now TODOs where we use bitcasts instead of a proper conversion or reloading. This fixes bug 25479. llvm-svn: 252706
* [libFuzzer] better links Kostya Serebryany2015-11-111-3/+3
| | | | llvm-svn: 252705
* [libFuzzer] more trophiesKostya Serebryany2015-11-111-20/+4
| | | | llvm-svn: 252704
* Bump up test timeout interval on Darwin from 4 to 6 minutes.Todd Fiala2015-11-111-0/+3
| | | | | | | We have several tests that TIMEOUT under heavy load but just need a bit more time to complete. llvm-svn: 252703
* Mark TestCompletion.py test_symbol_name_dwarf XFAIL on Darwin.Todd Fiala2015-11-111-0/+1
| | | | | | | | | | This test fails most of the time when run under heavy load. The dsym variant doesn't seem to be failing. Tracking XFAIL marker with: https://llvm.org/bugs/show_bug.cgi?id=25485 llvm-svn: 252702
* [FIX] Create empty invariant equivalence classesJohannes Doerfert2015-11-114-14/+145
| | | | | | | | | | | We now create all invariant equivalence classes for required invariant loads instead of creating them on-demand. This way we can check if a parameter references an invariant load that is actually not executed and was therefor not materialized. If that happens the parameter is not materialized either. This fixes bug 25469. llvm-svn: 252701
* [X86] Add missing typecasts in intrinsic macros. This should make them more ↵Craig Topper2015-11-117-55/+85
| | | | | | robust against inputs that aren't already the right type. llvm-svn: 252700
* Mark TestTerminal.py as XFAIL on OS X.Todd Fiala2015-11-111-0/+1
| | | | | | | See the following tracking bug: https://llvm.org/bugs/show_bug.cgi?id=25484 llvm-svn: 252699
* lit: Show all output with --show-all, even in combination with --succinctMatthias Braun2015-11-111-0/+1
| | | | | | | I missed an earlier exit for the --succinct case when I introduced the -a option. llvm-svn: 252698
* [X86] Change pointer type in AVX2 gather builtins to be the scalar type ↵Craig Topper2015-11-112-177/+135
| | | | | | instead of the vector type. This matches gcc and removes extras casts. llvm-svn: 252697
* Implement `internal_start/join_thread` on Mac OS XIsmail Pazarbasi2015-11-111-2/+12
| | | | | | | | | | | | | | Summary: Depends on D9637 Test Plan: Reviewers: kcc, glider, samsonov Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D9638 llvm-svn: 252696
* [tsan] Pass correct interposed function prefix to report functionIsmail Pazarbasi2015-11-111-1/+7
| | | | | | | | | | | | | | Summary: On Darwin, interposed functions are prefixed with "wrap_". On Linux, they are prefixed with "__interceptor_". Reviewers: dvyukov, samsonov, glider, kcc, kubabrecka Subscribers: zaks.anna, llvm-commits Differential Revision: http://reviews.llvm.org/D14512 llvm-svn: 252695
* ADT: Avoid relying on UB in ilist_node::getNextNode()Duncan P. N. Exon Smith2015-11-1110-51/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Re-implement `ilist_node::getNextNode()` and `getPrevNode()` without relying on the sentinel having a "next" pointer. Instead, get access to the owning list and compare against the `begin()` and `end()` iterators. This only works when the node *can* get access to the owning list. The new support is in `ilist_node_with_parent<>`, and any class `Ty` inheriting from `ilist_node<NodeTy>` that wants `getNextNode()` and/or `getPrevNode()` should inherit from `ilist_node_with_parent<NodeTy, ParentTy>` instead. The requirements: - `NodeTy` must have a `getParent()` function that returns the parent. - `ParentTy` must have a `getSublistAccess()` static that, given a(n ignored) `NodeTy*` (to determine which list), returns a member field pointer to the appropriate `ilist<>`. This isn't the cleanest way to get access to the owning list, but it leverages the API already used in the IR hierarchy (see, e.g., `Instruction::getSublistAccess()`). If anyone feels like ripping out the calls to `getNextNode()` and `getPrevNode()` and replacing with direct iterator logic, they can also remove the access function, etc., but as an incremental step, I'm maintaining the API where it's currently used in tree. If these requirements are *not* met, call sites with access to the ilist can call `iplist<NodeTy>::getNextNode(NodeTy*)` directly, as in ilistTest.cpp. Why rewrite this? The old code was broken, calling `getNext()` on a sentinel that possibly didn't have a "next" pointer at all! The new code avoids that particular flavour of UB (see the commit message for r252538 for more details about the "lucky" memory layout that made this function so interesting). There's still some UB here: the end iterator gets downcast to `NodeTy*`, even when it's a sentinel (which is typically `ilist_half_node<NodeTy*>`). I'll tackle that in follow-up commits. See this llvm-dev thread for more details: http://lists.llvm.org/pipermail/llvm-dev/2015-October/091115.html What's the danger? There might be some code that relies on `getNextNode()` or `getPrevNode()` *never* returning `nullptr` -- i.e., that relies on them being broken when the sentinel is an `ilist_half_node<NodeTy>`. I tried to root out those cases with the audits I did leading up to r252380, but it's possible I missed one or two. I hope not. (If (1) you have out-of-tree code, (2) you've reverted r252380 temporarily, and (3) you get some weird crashes with this commit, then I recommend un-reverting r252380 and auditing the compile errors looking for "strange" implicit conversions.) llvm-svn: 252694
* Reorder the check strings in test case following r252692.Akira Hatanaka2015-11-111-1/+1
| | | | | | rdar://problem/19836465 llvm-svn: 252693
* Sort the enums in Attributes.h in case insensitive alphabetical order.Akira Hatanaka2015-11-119-23/+23
| | | | | | | | | Sort the enums in preparation for moving the attributes to a table-gen file. rdar://problem/19836465 llvm-svn: 252692
* Fix a FIXME about using std::is_sorted.Eric Christopher2015-11-111-3/+4
| | | | llvm-svn: 252691
OpenPOWER on IntegriCloud