summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* AVX-512: Add assembly parser support for Rounding modeElena Demikhovsky2015-03-025-2/+115
| | | | | | By Asaf Badouh <asaf.badouh@intel.com> llvm-svn: 230962
* NVPTX: Remove dead code.Benjamin Kramer2015-03-023-116/+0
| | | | | | | Fun fact: This file was never referenced since the initial checkin of the NVPTX backend. llvm-svn: 230957
* [mips] Optimize conditional moves where RHS is zero.Vasileios Kalintiris2015-03-022-175/+159
| | | | | | | | | | | | | Summary: When the RHS of a conditional move node is zero, we can utilize the $zero register by inverting the conditional move instruction and by swapping the order of its True/False operands. Reviewers: dsanders Differential Revision: http://reviews.llvm.org/D7945 llvm-svn: 230956
* AVX-512: Simplified MOV patterns, no functional changes.Elena Demikhovsky2015-03-021-158/+142
| | | | llvm-svn: 230954
* bindings/go: expose DIBuilder::createReplaceableCompositeTypeAndrew Wilkins2015-03-023-0/+49
| | | | | | | | | | | | | | | | | Summary: We extend the DIBuilder type, adding a method for creating replaceable composite types. This is necessary for creating debug info describing self-referential types. Reviewers: pcc Reviewed By: pcc Subscribers: axw, llvm-commits Differential Revision: http://reviews.llvm.org/D7851 llvm-svn: 230951
* Simplify code. NFC.Benjamin Kramer2015-03-022-15/+5
| | | | llvm-svn: 230948
* Teach the verifier to enforce that the alignment argument of memory ↵Owen Anderson2015-03-022-2/+17
| | | | | | intrinsics must be a power of 2. llvm-svn: 230941
* Teach DataLayout that alignments on basic types must be powers of two.Owen Anderson2015-03-023-0/+16
| | | | | | Fixes assertion failures/crashes on bad datalayout specifications. llvm-svn: 230940
* Teach DataLayout that ABI alignments for non-aggregate types must be non-zero.Owen Anderson2015-03-022-0/+9
| | | | | | | This manifested as assertions and/or crashes in later phases of optimization, depending on the build configuration. llvm-svn: 230939
* Teach DataLayout that pointer ABI and preferred alignments are required to ↵Owen Anderson2015-03-023-0/+18
| | | | | | | | be powers of two. Previously this resulted in asserts and/or crashes (depending on build configuration) at various phases in the optimizer. llvm-svn: 230938
* Teach DataLayout that zero-byte pointer sizes don't make sense.Owen Anderson2015-03-022-0/+8
| | | | | | | | Previously this would result in assertion failures or simply crashes at various points in the optimizer when trying to create types of zero bit width. llvm-svn: 230936
* Teach the LLParser to fail gracefully when it encounters an invalid label name.Owen Anderson2015-03-022-5/+18
| | | | | | Previous it would either assert in +Asserts, or crash in -Asserts. Found by fuzzing LLParser. llvm-svn: 230935
* Fix a crash in the LL parser where it failed to validate that the pointer ↵Owen Anderson2015-03-022-0/+13
| | | | | | | | operand of a GEP was valid. This manifested as an assertion failure in +Asserts builds, and a hard crash in -Asserts builds. Found by fuzzing the LL parser. llvm-svn: 230934
* [llvm-pdbdump] Many minor fixes and improvementsZachary Turner2015-03-0218-69/+303
| | | | | | | | | | | | | | | | | A short list of some of the improvements: 1) Now supports -all command line argument, which implies many other command line arguments to simplify usage. 2) Now supports -no-compiler-generated command line argument to exclude compiler generated types. 3) Prints base class list. 4) -class-definitions implies -types. 5) Proper display of bitfields. 6) Can now distinguish between struct/class/interface/union. And a few other minor tweaks. llvm-svn: 230933
* Revert r230930, it caused PR22747.Nico Weber2015-03-0211-169/+153
| | | | llvm-svn: 230932
* [X86] There are only 8 mask registers. Fail disassembly if instruction tries ↵Craig Topper2015-03-021-0/+2
| | | | | | to reference more. llvm-svn: 230931
* Refactor DebugLocDWARFExpression so it doesn't require access to theAdrian Prantl2015-03-0211-153/+169
| | | | | | | | | | TargetRegisterInfo. DebugLocEntry now holds a buffer with the raw bytes of the pre-calculated DWARF expression. Ought to be NFC, but it does slightly alter the output format of the textual assembly. llvm-svn: 230930
* Revert r230921, "Revert some changes that were made to fix PR20680.", for now.NAKAMURA Takumi2015-03-024-17/+61
| | | | | | It caused a failure on clang/test/Misc/backend-optimization-failure.cpp . llvm-svn: 230929
* Add another missing header that used to be included transitively.Benjamin Kramer2015-03-021-0/+1
| | | | llvm-svn: 230927
* llvm/examples: Add missing include according to r230907.NAKAMURA Takumi2015-03-027-0/+7
| | | | llvm-svn: 230926
* [X86] Fix diassembler crash on AVX512 cmpps/cmppd with immediate that ↵Craig Topper2015-03-023-20/+30
| | | | | | doesn't fit in 5-bits. Fixes PR22743. llvm-svn: 230924
* [AArch64] fix an invalid-iterator-use bug.Sanjoy Das2015-03-021-2/+4
| | | | | | | | | | | | | | | | | | | | Summary: In AArch64PromoteConstant::appendAndTransferDominatedUses, `InsertPts[NewPt]` invalidates IPI. Therefore, `InsertPts[NewPt] = std::move(IPI->second)` is not legal. This was caught by running `make check` with http://reviews.llvm.org/D7931. Reviewers: t.p.northover, grosbach, bkramer Reviewed By: bkramer Subscribers: aemerson, llvm-commits Differential Revision: http://reviews.llvm.org/D7988 llvm-svn: 230923
* Fix a really bad typo in my last commit.Benjamin Kramer2015-03-011-1/+3
| | | | llvm-svn: 230922
* Revert some changes that were made to fix PR20680.Sanjoy Das2015-03-014-61/+17
| | | | | | | | | | | | | | | | | | | | | | | Summary: As far as I can tell, the real bug causing the issue was fixed in r230533. SCEVExpander should mark an increment operation as nuw or nsw only if it can *prove* that the operation does not overflow. There shouldn't be any situation where we have to do something different because of no-wrap flags generated by SCEVExpander. Revert "IndVarSimplify: Allow LFTR to fire more often" This reverts commit 1ade0f0faa98877b688e0b9da58e876052c1e04e (SVN: 222213). Revert "IndVarSimplify: Don't let LFTR compare against a poison value" This reverts commit c0f2b8b528d8a37b0a1522aae90af649d6357eb5 (SVN: 217102). Reviewers: majnemer, atrick, spatel Differential Revision: http://reviews.llvm.org/D7979 llvm-svn: 230921
* ArrayRef: Put back std::equal for operator== with a check for the empty ↵Benjamin Kramer2015-03-011-8/+2
| | | | | | | | | | | | | | | | ArrayRefs This has the nice property of compiling down to memcmp when feasible. An empty ArrayRef can have a nullptr in its Data field. I didn't find anything in the standard speaking against std::equal(nullptr, nullptr, nullptr) begin valid but MSVC asserts. The way libstdc++ lowers std::equal down to memcmp also makes invoking std::equal with a nullptr undefined behavior so checking is the only way to be safe. The extra check doesn't cost us perf either because we're essentially peeling the loop header away from the rotated loop. llvm-svn: 230920
* Another missing include for MSVC.Benjamin Kramer2015-03-011-0/+1
| | | | llvm-svn: 230918
* std::function is part of <functional>, not <utility>Benjamin Kramer2015-03-011-1/+1
| | | | llvm-svn: 230913
* Add another missing include for MSVC.Benjamin Kramer2015-03-011-0/+1
| | | | llvm-svn: 230912
* X86: Replace variadic function with init list. NFC.Benjamin Kramer2015-03-011-32/+27
| | | | llvm-svn: 230911
* Add missing includes. make_unique proliferated everywhere.Benjamin Kramer2015-03-0116-10/+25
| | | | llvm-svn: 230909
* [PBQP] Address post-commit style comment for r230904. NFC.Arnaud A. de Grandmaison2015-03-011-2/+2
| | | | | | Thanks David ! llvm-svn: 230908
* ArrayRef: Remove the equals helper with many arguments.Benjamin Kramer2015-03-013-87/+28
| | | | | | | | | | | | | With initializer lists there is a really neat idiomatic way to write this, 'ArrayRef.equals({1, 2, 3, 4, 5})'. Remove the equal method which always had a hard limit on the number of arguments. I considered rewriting it with variadic templates but that's not really a good fit for a function with homogeneous arguments. 'ArrayRef == {1, 2, 3, 4, 5}' would've been even more awesome, but C++11 doesn't allow init lists with binary operators. llvm-svn: 230907
* [PBQP] Do not add an edge between nodes with totally disjoint allowed registersArnaud A. de Grandmaison2015-03-012-11/+65
| | | | | | | | | | | Such edges are zero matrix, and they bring no additional info to the allocation problem, apart from contributing to nodes' degree. Removing those edges is expected to improve allocation time. Tune the spill cost comparison, as this gives better average performances now that the nodes' degrees has changed. llvm-svn: 230904
* Make VTs and UnicodeCharSet ctors constexpr if the compiler supports it.Benjamin Kramer2015-03-013-6/+9
| | | | | | | | There are static variables of this around that we really want to go into a read-only segment. Sadly compilers are not smart enough to figure that out without constexpr. llvm-svn: 230895
* Make some non-constant static variables non-static or fully const.Benjamin Kramer2015-03-014-40/+12
| | | | | | Otherwise we have to emit thread-safe initialization for them. NFC. llvm-svn: 230894
* Reverted 230471 - gather scatter handling in table gen.Elena Demikhovsky2015-03-019-141/+50
| | | | llvm-svn: 230892
* AVX-512: Added mask and rounding mode for scalar arithmeticsElena Demikhovsky2015-03-015-18/+191
| | | | | | Added more tests for scalar instructions to destinguish between AVX and AVX-512 forms. llvm-svn: 230891
* [llvm-pdbdump] Fix GCC build.Zachary Turner2015-03-011-3/+10
| | | | llvm-svn: 230890
* [llvm-pdbdump] Clean up method signatures.Zachary Turner2015-03-0180-489/+300
| | | | llvm-svn: 230889
* [llvm-pdbdump] Add regex-based filtering.Zachary Turner2015-03-0112-14/+220
| | | | llvm-svn: 230888
* Revert r230655, "gold-plugin: "Upgrade" debug info and handle its warnings."NAKAMURA Takumi2015-03-013-37/+11
| | | | | | It emits *millions of warnings* during selfhosting LTO build, to choke the buildbot with gigbytes of log. llvm-svn: 230885
* avoid infinite looping when folding vector multiplies of constants (PR22698)Sanjay Patel2015-03-012-5/+48
| | | | | | | | | | | | | | | We were missing a check for the following fold in DAGCombiner: // fold (fmul (fmul x, c1), c2) -> (fmul x, (fmul c1, c2)) If 'x' is also a constant, then we shouldn't do anything. Otherwise, we could end up swapping the operands back and forth forever. This should fix: http://llvm.org/bugs/show_bug.cgi?id=22698 Differential Revision: http://reviews.llvm.org/D7917 llvm-svn: 230884
* fixed to test only the feature, not the feature and a CPUSanjay Patel2015-03-011-3/+3
| | | | llvm-svn: 230883
* DebugInfo: Convert DW_OP_piece => DW_OP_bit_pieceDuncan P. N. Exon Smith2015-02-282-5/+5
| | | | | | | | | r228631 stopped using `DW_OP_piece` inside `DIExpression`s in the IR, but it apparently missed updating these testcases. Caught by verifier checks for `MDExpression` while working on moving the new hierarchy into place. llvm-svn: 230882
* make the tested feature (SSE2) explicitSanjay Patel2015-02-281-1/+1
| | | | llvm-svn: 230881
* DebugInfo: Fix invalid file reference in CodeGen/X86/unknown-location.llDuncan P. N. Exon Smith2015-02-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two types of files in the old (current) debug info schema. !0 = !{!"some/filename", !"/path/to/dir"} !1 = !{!"0x29", !0} ; [ DW_TAG_file_type ] !1 has a wrapper class called `DIFile` which inherits from `DIScope` and is referenced in 'scope' fields. !0 is called a "file node", and debug info nodes with a 'file' field point at one of these directly -- although they're built in `DIBuilder` by sending in a `DIFile` and reaching into it. In the new hierarchy, I unified these nodes as `MDFile` (which `DIFile` is a lightweight wrapper for) in r230057. Moving the new hierarchy into place (and upgrading testcases) caused CodeGen/X86/unknown-location.ll to start failing -- apparently "0x29" was previously showing up in the linetable as a filename, causing: .loc 2 4 3 (where 2 points at filename "0x29") instead of: .loc 1 4 3 (where 1 points at the actual filename). Change the testcase to use the old schema correctly. llvm-svn: 230880
* DebugInfo: Use TempMDNode in DIDescriptor::replaceAllUsesWith()Duncan P. N. Exon Smith2015-02-281-13/+9
| | | | | | | | | | | | | | Start using `TempMDNode` in `DIDescriptor::replaceAllUsesWith()` (effectively `std::unique_ptr<MDNode, MDNode::deleteTemporary>`). Besides making ownership more explicit, this prepares for when `DIDescriptor` refers to nodes that are *not* `MDTuple`. The old logic for "replacing" a node with itself used `MDNode::get()` to return a new (uniqued) `MDTuple`, while the new logic just defers to `MDNode::replaceWithUniqued()` (which also typically saves an allocation and RAUW traffic by mutating the temporary in place). llvm-svn: 230879
* fixed to test only the feature, not the feature and a CPUSanjay Patel2015-02-281-1/+1
| | | | llvm-svn: 230878
* Optimize metadata node fields for CHECK-abilityDuncan P. N. Exon Smith2015-02-2813-81/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While gaining practical experience hand-updating CHECK lines (for moving the new debug info hierarchy into place), I learnt a few things about CHECK-ability of the specialized node assembly output. - The first part of a `CHECK:` is to identify the "right" node (this is especially true if you intend to use the new `CHECK-SAME` feature, since the first CHECK needs to identify the node correctly before you can split the line). - If there's a `tag:`, it should go first. - If there's a `name:`, it should go next (followed by the `linkageName:`, if any). - If there's a `scope:`, it should follow after that. - When a node type supports multiple DW_TAGs, but one is implied by its name and is overwhelmingly more common, the `tag:` field is terribly uninteresting unless it's different. - `MDBasicType` is almost always `DW_TAG_base_type`. - `MDTemplateValueParameter` is almost always `DW_TAG_template_value_parameter`. - Printing `name: ""` doesn't improve CHECK-ability, and there are far more nodes than I realized that are commonly nameless. - There are a few other fields that similarly aren't very interesting when they're empty. This commit updates the `AsmWriter` as suggested above (and makes necessary changes in `LLParser` for round-tripping). llvm-svn: 230877
* fix typo; NFCSanjay Patel2015-02-281-1/+1
| | | | llvm-svn: 230876
OpenPOWER on IntegriCloud