summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [ThinLTO] PrintStatistics when we exit early for thinlto-index-onlyTeresa Johnson2017-02-022-0/+10
| | | | | | | | | | | | | | Summary: This is necessary to get stats from the ThinLink printed before the early exit when compiling in a distributed build. Reviewers: mehdi_amini Subscribers: Prazek, llvm-commits Differential Revision: https://reviews.llvm.org/D29461 llvm-svn: 293908
* [X86][SSE] Add test case for PR18344Simon Pilgrim2017-02-021-0/+89
| | | | llvm-svn: 293907
* [mips] Expansion of BEQL and BNEL with immediate operandsSimon Dardis2017-02-025-6/+82
| | | | | | | | | | | | Adds support for BEQL and BNEL macros with immediate operands. Patch by: Srdjan Obucina Reviewers: dsanders, zoran.jovanovic, vkalintiris, sdardis, obucina, seanbruno Differential Revision: https://reviews.llvm.org/D17040 llvm-svn: 293905
* [index] Provide a more general index::generateUSRForMacro() that doesn't ↵Argyrios Kyrtzidis2017-02-022-3/+15
| | | | | | depend on having a PreprocessingRecord. llvm-svn: 293904
* Use N0 instead of N->getOperand(0) in DagCombiner::visitAdd. NFCAmaury Sechet2017-02-021-1/+1
| | | | llvm-svn: 293903
* Make llvm::call_once more convenient to reuse out of LLVMKamil Rytarowski2017-02-021-1/+2
| | | | | | | | | | | | | | | | | Summary: Currently users need to set call `using namespace llvm;`, with this change it's no longer needed. Sponsored by <The NetBSD Foundation> Reviewers: labath, emaste, joerg, clayborg, mehdi_amini Reviewed By: mehdi_amini Subscribers: chandlerc Differential Revision: https://reviews.llvm.org/D29296 llvm-svn: 293902
* [ThinLTO] Resolve old FIXME for alias importing in testTeresa Johnson2017-02-021-2/+4
| | | | | | | This FIXME was added with r265941 and should have been resolved with r266517. llvm-svn: 293901
* [SystemZ] Add comment for ISD::FP_TO_UINT expansion.Jonas Paulsson2017-02-021-0/+3
| | | | | | | (Copied from the fp-conv-10.ll test to SystemZISelLowering.cpp) Review: Ulrich Weigand llvm-svn: 293900
* [Hexagon] Emitting individual instructions without copying themKrzysztof Parzyszek2017-02-022-97/+82
| | | | | | Patch by Colin LeMahieu. llvm-svn: 293899
* [clang-format] Don't reflow across comment pragmas.Krasimir Georgiev2017-02-026-22/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The comment reflower wasn't taking comment pragmas as reflow stoppers. This patch fixes that. source: ``` // long long long long // IWYU pragma: ``` format with column limit = 20 before: ``` // long long long // long IWYU pragma: ``` format with column limit = 20 after: ``` // long long long // long // IWYU pragma: ``` Reviewers: djasper Reviewed By: djasper Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D29450 llvm-svn: 293898
* [change-namespace] check using shadow decl correctly when shortening ↵Eric Liu2017-02-022-2/+71
| | | | | | | | | | | | | | | | | namespace specifiers. Summary: This fixes mismatch between template decls and template specialization decls. Also added a few more test cases. Reviewers: bkramer Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D29447 llvm-svn: 293897
* [JumpThread] Enhance finding partial redundant loads by continuing scanning ↵Jun Bum Lim2017-02-024-6/+105
| | | | | | | | | | | | | | | | single predecessor Summary: While scanning predecessors to find an available loaded value, if the predecessor has a single predecessor, we can continue scanning through the single predecessor. Reviewers: mcrosier, rengolin, reames, davidxl, haicheng Reviewed By: rengolin Subscribers: zzheng, llvm-commits Differential Revision: https://reviews.llvm.org/D29200 llvm-svn: 293896
* Fix multi-process-driver.cpp build on NetBSDKamil Rytarowski2017-02-021-1/+1
| | | | | | | | | | | | | | | | | | | Summary: Include <string.h> for strcmp(3) and memset(3). Sponsored by <The NetBSD Foundation> Reviewers: joerg, clayborg, emaste, labath Reviewed By: clayborg Subscribers: #lldb Tags: #lldb Differential Revision: https://reviews.llvm.org/D29403 llvm-svn: 293895
* [Hexagon] Rename TypeCOMPOUND to TypeCJKrzysztof Parzyszek2017-02-028-16/+15
| | | | llvm-svn: 293894
* In visitSTORE, always use FindBetterChain, rather than only when UseAA is ↵Nirav Dave2017-02-0272-2226/+2046
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | enabled. Recommiting after fixing X86 inc/dec chain bug. * Simplify Consecutive Merge Store Candidate Search Now that address aliasing is much less conservative, push through simplified store merging search and chain alias analysis which only checks for parallel stores through the chain subgraph. This is cleaner as the separation of non-interfering loads/stores from the store-merging logic. When merging stores search up the chain through a single load, and finds all possible stores by looking down from through a load and a TokenFactor to all stores visited. This improves the quality of the output SelectionDAG and the output Codegen (save perhaps for some ARM cases where we correctly constructs wider loads, but then promotes them to float operations which appear but requires more expensive constant generation). Some minor peephole optimizations to deal with improved SubDAG shapes (listed below) Additional Minor Changes: 1. Finishes removing unused AliasLoad code 2. Unifies the chain aggregation in the merged stores across code paths 3. Re-add the Store node to the worklist after calling SimplifyDemandedBits. 4. Increase GatherAllAliasesMaxDepth from 6 to 18. That number is arbitrary, but seems sufficient to not cause regressions in tests. 5. Remove Chain dependencies of Memory operations on CopyfromReg nodes as these are captured by data dependence 6. Forward loads-store values through tokenfactors containing {CopyToReg,CopyFromReg} Values. 7. Peephole to convert buildvector of extract_vector_elt to extract_subvector if possible (see CodeGen/AArch64/store-merge.ll) 8. Store merging for the ARM target is restricted to 32-bit as some in some contexts invalid 64-bit operations are being generated. This can be removed once appropriate checks are added. This finishes the change Matt Arsenault started in r246307 and jyknight's original patch. Many tests required some changes as memory operations are now reorderable, improving load-store forwarding. One test in particular is worth noting: CodeGen/PowerPC/ppc64-align-long-double.ll - Improved load-store forwarding converts a load-store pair into a parallel store and a memory-realized bitcast of the same value. However, because we lose the sharing of the explicit and implicit store values we must create another local store. A similar transformation happens before SelectionDAG as well. Reviewers: arsenm, hfinkel, tstellarAMD, jyknight, nhaehnle llvm-svn: 293893
* [X86,ISEL] Fix X86 increment chain dependence calculationNirav Dave2017-02-021-0/+2
| | | | | | | | Merging Load-add-store pattern into a increment op previously dropped the load's chain from the instructions dependence if the store is chained to a TokenFactor. llvm-svn: 293892
* [clang-format] Fix breaking of comment sections in unwrapped lines ↵Krasimir Georgiev2017-02-024-4/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | containing newlines. Summary: The breaking of line comment sections was misaligning the case where the first comment line is on an unwrapped line containing newlines. In this case, the breaking column must be based on the source column of the last token that is preceded by a newline, not on the first token of the unwrapped line. source: ``` enum A { a, // line 1 // line 2 }; ``` format before: ``` enum A { a, // line 1 // line 2 }; ``` format after: ``` enum A { a, // line 1 // line 2 }; ``` Reviewers: djasper Reviewed By: djasper Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D29444 llvm-svn: 293891
* A new algorithm for identification of a SCoP statement that implement a matrixRoman Gareev2017-02-025-491/+624
| | | | | | | | | | | | | | | | | | | | multiplication The current identification of a SCoP statement that implement a matrix multiplication does not help to identify different permutations of loops that contain it and check for dependencies, which can prevent it from being optimized. It also requires external determination of the operands of the matrix multiplication. This patch contains the implementation of a new algorithm that helps to avoid these issues. It also modifies the test cases that generate matrix multiplications with linearized accesses, because the new algorithm does not support them. Reviewed-by: Michael Kruse <llvm@meinersbur.de>, Tobias Grosser <tobias@grosser.es> Differential Revision: https://reviews.llvm.org/D28357 llvm-svn: 293890
* [ARM] GlobalISel: Lower pointer args and returnsDiana Picus2017-02-024-6/+102
| | | | | | | | | It is important to change the ArgInfo's type from pointer to integer, otherwise the CC assign function won't know what to do. Instead of hacking it up, we use ComputeValueVTs and introduce some of the helpers that we will need later on for lowering more complex types. llvm-svn: 293889
* [ARM] GlobalISel: Error out instead of assertingDiana Picus2017-02-021-1/+1
| | | | | | | | Allow unknown types in TLI.getValueType, otherwise we get asserts for certain types that we do not support yet (instead of returning that we don't support them and falling through the normal error path). llvm-svn: 293888
* [LICM] Hoist loads that are dominated by invariant.start intrinsic, and are ↵Anna Thomas2017-02-022-0/+233
| | | | | | | | | | | | | | | | | | invariant in the loop. Summary: We can hoist out loads that are dominated by invariant.start, to the preheader. We conservatively assume the load is variant, if we see a corresponding use of invariant.start (it could be an invariant.end or an escaping call). Reviewers: mkuper, sanjoy, reames Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D29331 llvm-svn: 293887
* [ARM] GlobalISel: Legalize loading pointersDiana Picus2017-02-023-1/+38
| | | | | | | Make it legal to load pointer values. Also check that pointers are assigned to the GPR reg bank by default. llvm-svn: 293886
* [tsan] Provide API for libraries for race detection on custom objectsKuba Mracek2017-02-0212-12/+289
| | | | | | | | This patch allows a non-instrumented library to call into TSan runtime, and tell us about "readonly" and "modifying" accesses to an arbitrary "object" and provide the caller and tag (type of object). This allows TSan to detect violations of API threading contracts where "read-only" methods can be called simulatenously from multiple threads, while modifying methods must be exclusive. Differential Revision: https://reviews.llvm.org/D28836 llvm-svn: 293885
* Fixup of r293882: Forgot to update sanitizer_thread_registry.test.ccKuba Mracek2017-02-021-6/+6
| | | | llvm-svn: 293884
* [ARM] GlobalISel: Test default banks for load results. NFC.Diana Picus2017-02-021-0/+32
| | | | | | Check that all scalars are loaded into the GPR by default. llvm-svn: 293883
* [tsan] Properly describe GCD worker threads in reportsKuba Mracek2017-02-0215-20/+76
| | | | | | | | When dealing with GCD worker threads, TSan currently prints weird things like "created by thread T-1" and "[failed to restore the stack]" in reports. This patch avoids that and instead prints "Thread T3 (...) is a GCD worker thread". Differential Revision: https://reviews.llvm.org/D29103 llvm-svn: 293882
* Extend XFAIL to c++98.Asiri Rathnayake2017-02-021-1/+1
| | | | | | NFC. llvm-svn: 293881
* [X86][SSE] Use MOVMSK for all_of/any_of reduction patternsSimon Pilgrim2017-02-023-542/+365
| | | | | | | | | | This is a first attempt at using the MOVMSK instructions to replace all_of/any_of reduction patterns (i.e. an and/or + shuffle chain). So far this only matches patterns where we are reducing an all/none bits source vector (i.e. a comparison result) but we should be able to expand on this in conjunction with improvements to 'bool vector' handling both in the x86 backend as well as the vectorizers etc. Differential Revision: https://reviews.llvm.org/D28810 llvm-svn: 293880
* [clang-format] Don't reflow lines starting with TODO, FIXME or XXX.Krasimir Georgiev2017-02-022-3/+36
| | | | | | | | | | | | | | Summary: These lines commonly carry a special meaning. Reviewers: djasper Reviewed By: djasper Subscribers: cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D29396 llvm-svn: 293878
* Improve docs: Add missing #pragma push directive.Asiri Rathnayake2017-02-021-0/+1
| | | | | | NFC. llvm-svn: 293877
* DIBuilder.h: Fix a typo. [-Wdocumentation]NAKAMURA Takumi2017-02-021-1/+1
| | | | llvm-svn: 293876
* clang-format: Do not use two-argument/operand special case with no alignmentDaniel Jasper2017-02-022-1/+5
| | | | | | | | | | | | | | | | | Without alignment, there is no clean separation between the arguments, even if there are only two. Before: aaaaaaaaaaaaaa( aaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa); After: aaaaaaaaaaaaaa(aaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa); llvm-svn: 293875
* [analyzer] Fix an assertion fail in CStringSyntaxChecker.Gabor Horvath2017-02-022-17/+17
| | | | | | Differential Revision: https://reviews.llvm.org/D29384 llvm-svn: 293874
* [X86] Remove some unused DAGCombinerInfo parameters. NFCCraig Topper2017-02-021-7/+4
| | | | llvm-svn: 293873
* [X86] Move some INSERT_SUBVECTOR optimizations from legalize to DAG combine.Craig Topper2017-02-021-53/+74
| | | | | | | | This moves creation of SUBV_BROADCAST and merging of adjacent loads that are being inserted together. This is a step towards removing legalizing of INSERT_SUBVECTOR except for vXi1 cases. llvm-svn: 293872
* Fix typo. NFCGeorge Burgess IV2017-02-021-1/+1
| | | | llvm-svn: 293871
* [XRay] Probe for CPU features that XRay needsDean Michael Berris2017-02-026-3/+38
| | | | | | | | | | | | | | | | | | | | Summary: In llvm.org/PR31756 it's pointed out that sometimes rdtscp isn't available. We fix it here by checking first whether it's availble before installing the logging handler. In future commits we can have alternative implementations, maybe working around some of the constraints on some systems. This change enables us to make that determination, but report an error instead when the features aren't available. Reviewers: sdardis, javed.absar, rSerge Subscribers: pelikan, llvm-commits Differential Revision: https://reviews.llvm.org/D29438 llvm-svn: 293870
* [opt-viewer] HTML-escape function namesAdam Nemet2017-02-021-2/+5
| | | | llvm-svn: 293869
* [opt-viewer] Alternating row background colors on index pageAdam Nemet2017-02-022-6/+12
| | | | llvm-svn: 293868
* CodeGen: add a LLVM_FALLTHROUGH to a fallthrough (NFC)Saleem Abdulrasool2017-02-021-3/+3
| | | | | | Drive by cleanup noticed while investigating an IR verifier assertion. llvm-svn: 293867
* [LV] Also port failure remarks to new OptimizationRemarkEmitter APIAdam Nemet2017-02-025-32/+85
| | | | llvm-svn: 293866
* LTO: Link non-prevailing weak_odr or linkonce_odr globals into the combined ↵Peter Collingbourne2017-02-023-4/+36
| | | | | | | | | | | | module with available_externally linkage. These linkages mean that the ultimately prevailing symbol will have the same semantics as any non-prevailing copy of the symbol, so we are free to ignore the linker's resolution. Differential Revision: https://reviews.llvm.org/D29367 llvm-svn: 293865
* Linker: Move special casing for available_externally in IRMover to clients. ↵Peter Collingbourne2017-02-026-17/+57
| | | | | | | | | | NFCI. The goal is to simplify the semantic model for clients of IRMover. Differential Revision: https://reviews.llvm.org/D29435 llvm-svn: 293864
* Modules: Simplify CompilerInstance constructor, NFCDuncan P. N. Exon Smith2017-02-022-7/+4
| | | | | | | Initialize fields directly in header. Note that the ModuleManager field is an IntrusiveRefCntPtr, so there's no need for explicit initialization. llvm-svn: 293863
* [AVX-512] Fix the implicit defs for VZEROALL/VZEROUPPER to include YMM16-YMM31.Craig Topper2017-02-022-29/+17
| | | | llvm-svn: 293862
* [AVX-512] Add test case demonstrating that we have an incomplete implicit ↵Craig Topper2017-02-021-2/+42
| | | | | | def list for VZEROALL/VZEROUPPER. YMM16-YMM31 should also be defs. llvm-svn: 293861
* [X86] Use update_llc_test_checks.py to regenerate a test.Craig Topper2017-02-021-6/+25
| | | | llvm-svn: 293860
* InferAddressSpaces: Handle more cases with constant select operandsMatt Arsenault2017-02-022-26/+177
| | | | llvm-svn: 293859
* Add logging to SBThread::GetInfoItemByPathAsString toJason Molenda2017-02-022-8/+10
| | | | | | | | | | | | print the path being requested. Change the GetInfoItemByPathAsString docuemtnation in the .i file to use docstring instead of autodoc so the function signature is included in the python help. <rdar://problem/29999567> llvm-svn: 293858
* AMDGPU: Use source modifiers with f16->f32 conversionsMatt Arsenault2017-02-0216-116/+463
| | | | | | | | | | | The operand types were defined to fit the fp16_to_fp node, which has the half as an integer type. v_cvt_f32_f16 does support source modifiers, so change this to have an FP type and modifiers. For targets without legal f16, this requires recognizing the bit operations and trying to produce them. llvm-svn: 293857
OpenPOWER on IntegriCloud