summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Port the strip-invalid-debuginfo logic to the legacy verifier pass, too.Adrian Prantl2016-05-252-7/+39
| | | | | | | | | | | | | | | | | | | | | Since r268966 the modern Verifier pass defaults to stripping invalid debug info in nonasserts builds. This patch ports this behavior back to the legacy Verifier pass as well. The primary motivation is that the clang frontend accepts bitcode files as input but is still using the legacy pass pipeline. Background: The problem I'm trying to solve with this sequence of patches is that historically we've done a really bad job at verifying debug info. We want to be able to make the verifier stricter without having to worry about breaking bitcode compatibility with existing producers. For example, we don't necessarily want IR produced by an older version of clang to be rejected by an LTO link just because of malformed debug info, and rather provide an option to strip it. Note that merely outdated (but well-formed) debug info would continue to be auto-upgraded in this scenario. http://reviews.llvm.org/D20629 <rdar://problem/26448800> llvm-svn: 270768
* [X86][SSE41] Removed pblendw intrinsics tests - they are auto-upgradedSimon Pilgrim2016-05-251-16/+0
| | | | | | Equivalent tests included in sse41-intrinsics-x86-upgrade.ll - the i8/i32 immediate diff doesn't matter anymore llvm-svn: 270767
* [profile] Add early checking to bypass node pointer updateXinliang David Li2016-05-252-3/+13
| | | | llvm-svn: 270766
* Move whole-program virtual call optimization pass after function attribute ↵Peter Collingbourne2016-05-252-25/+27
| | | | | | | | | | | | | | | | | | inference in LTO pipeline. As a result of D18634 we no longer infer certain attributes on linkonce_odr functions at compile time, and may only infer them at LTO time. The readnone attribute in particular is required for virtual constant propagation (part of whole-program virtual call optimization) to work correctly. This change moves the whole-program virtual call optimization pass after the function attribute inference passes, and enables the attribute inference passes at opt level 1, so that virtual constant propagation has a chance to work correctly for linkonce_odr functions. Differential Revision: http://reviews.llvm.org/D20643 llvm-svn: 270765
* [X86][SSE41] Regenerated intrinsics testsSimon Pilgrim2016-05-252-56/+370
| | | | llvm-svn: 270764
* [TLI] Also cover Linux 64 libfunc (stat64, ...) prototype checking.Ahmed Bougacha2016-05-253-3/+65
| | | | | | My script missed those in r270750. llvm-svn: 270763
* [profile] Don't return `Node` when it is null.Sean Silva2016-05-251-5/+7
| | | | | | | | | The max warning check was masking the "return 0" codepath. See the thread "Warnings and compile-time failure on 458.sjeng" for more info. llvm-svn: 270762
* [X86][SSE41] Removed blendpd/blendps intrinsics tests - they are auto-upgradedSimon Pilgrim2016-05-251-17/+1
| | | | | | Equivalent tests included in sse41-intrinsics-x86-upgrade.ll llvm-svn: 270761
* fix typo; NFCSanjay Patel2016-05-251-1/+1
| | | | llvm-svn: 270760
* ValueMaterializer: rename materializeDeclFor() to materialize()Mehdi Amini2016-05-254-9/+9
| | | | | | | | | | It may materialize a declaration, or a definition. The name could be misleading. This is following a merge of materializeInitFor() into materializeDeclFor(). Differential Revision: http://reviews.llvm.org/D20593 llvm-svn: 270759
* ValueMaterializer: fuse materializeDeclFor and materializeInitFor (NFC)Mehdi Amini2016-05-253-45/+25
| | | | | | | | | | | | They were originally separated to handle the co-recursion between the ValueMapper and the ValueMaterializer. This recursion does not exist anymore: the ValueMapper now uses a Worklist and the ValueMaterializer is scheduling job on the Worklist. Differential Revision: http://reviews.llvm.org/D20593 From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 270758
* IRLinker: fix double scheduling of mapping a global value because of an aliasMehdi Amini2016-05-252-0/+24
| | | | | | | | | | | | This test was hitting an assertion in the value mapper because the IRLinker was trying to map two times @A while materializing the initializer for @C. Fix http://llvm.org/PR27850 Differential Revision: http://reviews.llvm.org/D20586 llvm-svn: 270757
* [X86][AVX2] Regenerate avx2 vector shift testsSimon Pilgrim2016-05-251-215/+227
| | | | llvm-svn: 270756
* [libfuzzer] replacing unittest for truncate_units with functional test.Mike Aizatsky2016-05-254-22/+22
| | | | | | Differential Revision: http://reviews.llvm.org/D20641 llvm-svn: 270755
* Revert r270748 "clang-cl: Treat dllimport explicit template instantiation ↵Hans Wennborg2016-05-253-78/+17
| | | | | | | | | definitions as declarations (PR27810, PR27811)" It seems to have broken the sanitizer-windows bot. Reverting while investigating. llvm-svn: 270754
* Simplify std::all_of/any_of predicates by using llvm::all_of/any_of. NFCI.Simon Pilgrim2016-05-251-7/+5
| | | | llvm-svn: 270753
* Fix an issue where LLDB would crash if one tried to 'frame variable' an ↵Enrico Granata2016-05-252-4/+8
| | | | | | | | unordered_map more than once in a stop due to the synthetic provider not properly caching the ValueObjects it was returning for the child elements Fixes rdar://26470909 llvm-svn: 270752
* [codeview] Move StreamInterface and StreamReader to libcodeview.Zachary Turner2016-05-2526-86/+196
| | | | | | | | | | We have need to reuse this functionality, including making additional generic stream types that are smarter about how and when they copy memory versus referencing the original memory. So all of these structures belong in the common library rather than being pdb specific. llvm-svn: 270751
* [TLI] Fix NumParams==0 prototype checking typo.Ahmed Bougacha2016-05-253-84/+1694
| | | | | | | | | | | | | There was a typo in r267758. It caused invalid accesses when given something like "void @free(...)", as NumParams == 0, and we then try to look at the 0th parameter. Turns out, most of these were untested; add both attribute and missing-prototype checks for all libc libfuncs. Differential Revision: http://reviews.llvm.org/D20543 llvm-svn: 270750
* Simplify std::all_of predicate (to one line) by using llvm::all_of. NFCI.Simon Pilgrim2016-05-251-2/+1
| | | | llvm-svn: 270749
* clang-cl: Treat dllimport explicit template instantiation definitions as ↵Hans Wennborg2016-05-253-17/+78
| | | | | | | | | | | declarations (PR27810, PR27811) This matches what MSVC does, and should make compiles faster by avoiding to unnecessarily emit a lot of code. Differential Revision: http://reviews.llvm.org/D20608 llvm-svn: 270748
* Simplify std::all_of predicate (to one line) by using llvm::all_of. NFCI.Simon Pilgrim2016-05-251-3/+1
| | | | llvm-svn: 270747
* Fix shouldAssumeDSOLocal for private linkage.Rafael Espindola2016-05-252-1/+9
| | | | llvm-svn: 270746
* Mark some arm-linux specific xfails marking bug entriesOmair Javaid2016-05-254-1/+5
| | | | | | | | TestCallUserAnonTypedef.py and TestIRInterpreter.py fail to limitation of JIT expressions in handling hard float ABI targets. TestBSDArchives.py fails due to python unicode error. TestBuiltinTrap.py fails due to wrong line information generated by some gcc versions. llvm-svn: 270745
* [libFuzzer] document the proposed FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTIONKostya Serebryany2016-05-251-0/+29
| | | | llvm-svn: 270744
* [IR] Copy comdats in GlobalObject::copyAttributesFromReid Kleckner2016-05-253-0/+20
| | | | | | | | | | | | | | This is probably correct for all uses except cross-module IR linking, where we need to move the comdat from the source module to the destination module. Fixes PR27870. Reviewers: majnemer Differential Revision: http://reviews.llvm.org/D20631 llvm-svn: 270743
* [llvm-pdbdump] Dump raw stream contents as binary block.Zachary Turner2016-05-251-2/+3
| | | | | | Dumping it as ASCII makes it fairly useless. llvm-svn: 270742
* TableGen: Use StringRef instead of std::stringMatt Arsenault2016-05-252-4/+4
| | | | llvm-svn: 270741
* AMDGPU: Fix v2i64/v2f64 bitcastsMatt Arsenault2016-05-252-1/+35
| | | | | | | These operations tend to get promoted away to v4i32 so this doesn't happen often. llvm-svn: 270740
* AMDGPU: Fix missing br_cc i1 test coverageMatt Arsenault2016-05-251-5/+44
| | | | | | Also un xfail a test. llvm-svn: 270739
* [SelectionDAG] Add smarts for BSWAP in computeKnownBits.Chad Rosier2016-05-252-0/+50
| | | | llvm-svn: 270738
* [esan][cfrag] Add skeleton for cache fragmentation tool supportQin Zhao2016-05-255-10/+89
| | | | | | | | | | | | | | | Summary: Adds cache_frag.h and cache_frag.cpp for the cache fragmentation tool. Updates test struct-simple.cpp. Reviewers: aizatsky Subscribers: filcab, zhaoqin, llvm-commits, eugenis, vitalybuka, kcc, bruening, kubabrecka Differential Revision: http://reviews.llvm.org/D20538 llvm-svn: 270737
* AMDGPU: Make vectorization defeating test changesMatt Arsenault2016-05-255-35/+33
| | | | | | Simplifies test updates in the future. llvm-svn: 270736
* [libcxx] Allow explicit pthread opt-inBen Craig2016-05-254-6/+18
| | | | | | | | | | | | | | | The existing pthread detection code in __config is pretty good for common operating systems. It doesn't allow cmake-time choices to be made for uncommon operating systems though. This change adds the LIBCXX_HAS_PTHREAD_API cmake flag, which turns into the _LIBCPP_HAS_THREAD_API_PTHREAD preprocessor define. This is a name change from the old _LIBCPP_THREAD_API_PTHREAD. The lit tests want __config_site.in variables to have a _LIBCPP_HAS prefix. http://reviews.llvm.org/D20573 llvm-svn: 270735
* [PM] CorrelatedValuePropagation: pass state to function. NFCI.Davide Italiano2016-05-251-29/+16
| | | | | | | While here, convert the logic of the pass to use static function(s). This is in preparation for porting this pass to the new PM. llvm-svn: 270734
* Allow explicit pthread opt-inBen Craig2016-05-251-0/+10
| | | | | | | | | | | | | | When building libcxxabi in tree (i.e. in llvm/projects/libcxxabi, along with llvm/projects/libcxx), libcxx's config_site.in doesn't get created in a timely manner. This means that any configuration that is normally set in libcxx's config_site.in needs to be duplicated in libcxxabi to successfully build libcxxabi. This patch does exactly that for the _LIBCPP_HAS_THREAD_API_PTHREAD preprocessor define. http://reviews.llvm.org/D20574 llvm-svn: 270732
* AMDGPU: Fix inconsistent lowering of select of vectorsMatt Arsenault2016-05-252-10/+81
| | | | | | | | | f32 vectors would use a sequence of BFI instructions instead of unrolled cmp + select. This was better in the case of a VALU select with SGPR inputs, but we don't have a way of dealing with that in the DAG. llvm-svn: 270731
* [profile] Further cleanup/refactor file handling codeXinliang David Li2016-05-251-34/+26
| | | | | | Also get rid of the redundant strncpy calls. llvm-svn: 270730
* [x86] avoid code explosion from LoopVectorizer for gather loop (PR27826) Sanjay Patel2016-05-252-2/+51
| | | | | | | | | | | | | | By making pointer extraction from a vector more expensive in the cost model, we avoid the vectorization of a loop that is very likely to be memory-bound: https://llvm.org/bugs/show_bug.cgi?id=27826 There are still bugs related to this, so we may need a more general solution to avoid vectorizing obviously memory-bound loops when we don't have HW gather support. Differential Revision: http://reviews.llvm.org/D20601 llvm-svn: 270729
* Use new triple API to check comdat /NFCXinliang David Li2016-05-251-1/+1
| | | | llvm-svn: 270728
* Use new triple API to check if comdat is supportedXinliang David Li2016-05-251-1/+1
| | | | llvm-svn: 270727
* Add a new helper API in triple /NFCXinliang David Li2016-05-251-0/+3
| | | | llvm-svn: 270726
* [obj2yaml] [yaml2obj] MachO support for rebase opcodesChris Bieneman2016-05-255-21/+264
| | | | | | This is the first bit of support for MachO __LINKEDIT segment data. llvm-svn: 270724
* [CMake] LINK_LIBS need to be public for Darwin dylib targetsChris Bieneman2016-05-252-12/+18
| | | | | | This should actually address PR27855. This results in adding references to the system libs inside generated dylibs so that they get correctly pulled in when linking against the dylib. llvm-svn: 270723
* Move and add comments to the top for tailcall-string-rvo.llTim Shen2016-05-251-5/+8
| | | | | | Differential Revision: http://reviews.llvm.org/D20311 llvm-svn: 270722
* [ELF] - Added support for jmp/call relaxations when ↵George Rimar2016-05-252-9/+59
| | | | | | | | | | | | | | R_X86_64_GOTPCRELX/R_X86_64_REX_GOTPCRELX are used. D15779 introduced basic approach to support new relaxations. This patch implements relaxations for jmp and call instructions, described in System V Application Binary Interface AMD64 Architecture Processor Supplement Draft Version 0.99.8 (https://github.com/hjl-tools/x86-psABI/wiki/x86-64-psABI-r249.pdf, B.2 "B.2 Optimize GOTPCRELX Relocations") Differential revision: http://reviews.llvm.org/D20622 llvm-svn: 270721
* [SDAG] Add a fallback multiplication expansionHal Finkel2016-05-252-1/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | LegalizeIntegerTypes does not have a way to expand multiplications for large integer types (i.e. larger than twice the native bit width). There's no standard runtime call to use in that case, and so we'd just assert. Unfortunately, as it turns out, it is possible to hit this case from standard-ish C code in rare cases. A particular case a user ran into yesterday involved an __int128 induction variable and a loop with a quadratic (not linear) recurrence which triggered some backend logic using SCEVExpander. In this case, the BinomialCoefficient code in SCEV generates some i129 variables, which get widened to i256. At a high level, this is not actually good (i.e. the underlying optimization, PPCLoopPreIncPrep, should not be transforming the loop in question for performance reasons), but regardless, the backend shouldn't crash because of cost-modeling issues in the optimizer. This is a straightforward implementation of the multiplication expansion, based on the algorithm in Hacker's Delight. I validated it against the code for the mul256b function from http://locklessinc.com/articles/256bit_arithmetic/ using random inputs. There should be no functional change for previously-working code (the new expansion code only replaces an assert). Fixes PR19797. llvm-svn: 270720
* [ThinLTO] Fix test check prefix so that intended prefix testedTeresa Johnson2016-05-251-1/+1
| | | | | | | There aren't any checks with prefix PROMOTE, should be PROMOTE_MOD1 which wasn't being tested (but works as expected). llvm-svn: 270719
* [x86, AVX] allow explicit calls to VZERO* to modify state in ↵Sanjay Patel2016-05-252-11/+9
| | | | | | | | | | VZeroUpperInserter pass (PR27823) As noted in the review, there are still problems, so this doesn't the bug completely. Differential Revision: http://reviews.llvm.org/D20529 llvm-svn: 270718
* Make SectionPiece 8 bytes smaller on LP64.Rui Ueyama2016-05-252-12/+23
| | | | | | | | | | | | This patch makes SectionPiece class 8 bytes smaller on platforms on which pointer size is 8 bytes. Sean suggested in a post commit review for r270340 that this could make a differentce, and it actually is. Time to link clang (with debug info) improved from 6.725 seconds to 6.589 seconds or by about 2%. Differential Revision: http://reviews.llvm.org/D20613 llvm-svn: 270717
OpenPOWER on IntegriCloud