summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [LVI] Fix spelling error in comment. NFCCraig Topper2017-06-091-1/+1
| | | | llvm-svn: 305115
* [LVI] Const correct and rename the LVILatticeVal parameter to ↵Craig Topper2017-06-091-9/+8
| | | | | | | | getPredicateResult. NFC Previously it was non-const reference named Result which would tend to make someone think that it was an outparam when really its an input. llvm-svn: 305114
* Minor clean up of profile rt testsXinliang David Li2017-06-092-3/+3
| | | | llvm-svn: 305113
* Simplify. NFC.Rui Ueyama2017-06-091-6/+5
| | | | llvm-svn: 305112
* [VMRange] Remove unused FindRangeIndexThatContainsValue().Davide Italiano2017-06-092-16/+0
| | | | llvm-svn: 305111
* [ODRHash] Add support for TemplateArgument types.Richard Trieu2017-06-092-1/+37
| | | | | | | Recommit r304592 that was reverted in r304618. r305104 should have fixed the issue. llvm-svn: 305110
* [VMRange] Implement comparison operators using `==` and `<`.Davide Italiano2017-06-091-17/+4
| | | | llvm-svn: 305109
* [pdb] Support CoffSymbolRVA debug subsection.Zachary Turner2017-06-099-0/+169
| | | | llvm-svn: 305108
* [SROA] Fix APInt size when load/store have different address spaceYaxun Liu2017-06-092-7/+40
| | | | | | | | | | | | | | | Currently there is a bug in SROA::presplitLoadsAndStores which causes assertion in GEPOperator::accumulateConstantOffset. Basically it does not consider the situation that the pointer operand of load or store may be in a non-zero address space and its size may be different from the size of a pointer in address space 0. This patch fixes assertion when compiling Blender Cycles kernels for amdgpu backend. Diffferential Revision: https://reviews.llvm.org/D33298 llvm-svn: 305107
* Rename llvm-pdbdump -> llvm-pdbutil.Zachary Turner2017-06-0978-132/+136
| | | | | | | | | | This is to reflect the evolving nature of the tool as being useful for more than just dumping PDBs, as it can do many other things. Differential Revision: https://reviews.llvm.org/D34062 llvm-svn: 305106
* [ADT] Make iterable SmallVector template overrides more specificFrancis Ricci2017-06-092-4/+78
| | | | | | | | | | | | | | | | Summary: This prevents the iterator overrides from being selected in the case where non-iterator types are used as arguments, which is of particular importance in cases where other overrides with identical types exist. Reviewers: dblaikie, bkramer, rafael Subscribers: llvm-commits, efriedma Differential Revision: https://reviews.llvm.org/D33919 llvm-svn: 305105
* [ODRHash] Skip inline namespaces when hashing.Richard Trieu2017-06-092-13/+19
| | | | | | | Speculatively try to fix the underlying issue from r304592, of underlying types being confused when inline namespaces are used. llvm-svn: 305104
* Bringt back -triple so the test passes on non-x86.Benjamin Kramer2017-06-091-1/+1
| | | | llvm-svn: 305103
* [Sink] Fix predicate in legality checkKeno Fischer2017-06-092-1/+19
| | | | | | | | | | | | | | | | | | Summary: isSafeToSpeculativelyExecute is the wrong predicate to use here. All that checks for is whether it is safe to hoist a value due to unaligned/un-dereferencable accesses. However, not only are we doing sinking rather than hoisting, our concern is that the location we're loading from may have been modified. Instead forbid sinking any load across a critical edge. Reviewers: majnemer Subscribers: davide, llvm-commits Differential Revision: https://reviews.llvm.org/D33179 llvm-svn: 305102
* Add #pragma clang module build/endbuild pragmas for performing a module buildRichard Smith2017-06-0913-168/+377
| | | | | | | | | | | | | | | as part of a compilation. This is intended for two purposes: 1) Writing self-contained test cases for modules: we can now write a single source file test that builds some number of module files on the side and imports them. 2) Debugging / test case reduction. A single-source testcase is much more amenable to reduction, compared to a VFS tarball or .pcm files. llvm-svn: 305101
* I guess /dev/null is a bad idea on windows. Use a temp file instead.Benjamin Kramer2017-06-091-1/+1
| | | | llvm-svn: 305100
* [VMRange] Use llvm::find_if. Thanks to Zachary for the suggestion.Davide Italiano2017-06-091-4/+2
| | | | llvm-svn: 305099
* [AMDGPU] Add intrinsics for alignbit and alignbyte instructionsStanislav Mekhanoshin2017-06-093-2/+35
| | | | | | Differential Revision: https://reviews.llvm.org/D34046 llvm-svn: 305098
* [llvm-cvtres] Don't polute the test directory.Benjamin Kramer2017-06-091-1/+1
| | | | llvm-svn: 305097
* Don't check the raw bits in tests.Rafael Espindola2017-06-094-25/+25
| | | | | | It is not needed since we have the disassemble. llvm-svn: 305096
* Fix -Wreorder-fields warning.Zachary Turner2017-06-091-2/+2
| | | | llvm-svn: 305095
* [ASTMatchers] Fix use after free.Benjamin Kramer2017-06-091-1/+2
| | | | | | Found by asan. llvm-svn: 305094
* Allow VarStreamArray to use stateful extractors.Zachary Turner2017-06-0915-215/+141
| | | | | | | | | | | Previously extractors tried to be stateless with any additional context information needed in order to parse items being passed in via the extraction method. This led to quite cumbersome implementation challenges and awkwardness of use. This patch brings back support for stateful extractors, making the implementation and usage simpler. llvm-svn: 305093
* Implement COFF emission for parsed Windows Resource ( .res) files.Eric Beckmann2017-06-099-54/+849
| | | | | | | | | | | | Summary: Add the WindowsResourceCOFFWriter class for producing the final COFF after all parsing is done. Reviewers: hiraditya!, zturner, ruiu Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D34020 llvm-svn: 305092
* [X86][SSE] Add support for PACKSS nodes to faux shuffle extractionSimon Pilgrim2017-06-092-279/+297
| | | | | | If the inputs won't saturate during packing then we can treat the PACKSS as a truncation shuffle llvm-svn: 305091
* [OpenMP] Prevent unused-variable warning in libomptarget when compiling in ↵Samuel Antao2017-06-091-0/+4
| | | | | | Release mode. llvm-svn: 305090
* Repair 2010-05-31-palignr.c testVassil Vassilev2017-06-091-5/+3
| | | | | | | | | | | | | | | | | | | | This test was silently failing since a long time because it failed to include stdlib.h (as it's running in a freestanding environment). However, because we used just not clang_cc1 instead of the verify mode, this regression was never noticed and the test was just always passing. This adds -ffreestanding to the invocation, so that tmmintrin.h doesn't indirectly include mm_malloc.h, which in turns includes the unavailable stdlib.h. We also run now in the -verify mode to prevent that we silently regress again. I've also updated the test to no longer check the return value of _mm_alignr_epi8 as this is also causing it to fail (and it's not really the job of this test to test this). Patch by Raphael Isemann (D34022) llvm-svn: 305089
* We do not need google test utils if we disabled LLVM_INCLUDE_TESTSVassil Vassilev2017-06-091-1/+4
| | | | | | Fixes embedded uses of llvm where google testing framework is provided outside. llvm-svn: 305088
* support operator keywords used in Windows SDKErich Keane2017-06-094-1/+59
| | | | | | | | | | | | | | | | | | to support operator keywords used in Windows SDK, alter token type when seen in system headers Hello, I submitted D33505 to address this problem, but the proposal was rejected as too big a hammer. This change will allow clang to parse the WindowsSDK header <query.h> which uses the operator name "or" as a field name. Treat cpp operator keywords as ordinary identifiers inside the Microsoft headers, but treat them as usual in the user's program. Original Submitter: Melanie Blower (mibintc) Differential Revision: https://reviews.llvm.org/D33782 llvm-svn: 305087
* [LazyValueInfo] Don't run the more complex predicate handling code for EQ ↵Craig Topper2017-06-091-8/+8
| | | | | | | | | | | | | | | | | | | and NE in getPredicateResult Summary: Unless I'm mistaken, the special handling for EQ/NE should cover everything and there is no reason to fallthrough to the more complex code. For that matter I'm not sure there's any reason to special case EQ/NE other than avoiding creating temporary ConstantRanges. This patch moves the complex code into an else so we only do it when we are handling a predicate other than EQ/NE. Reviewers: anna, reames, resistor, Farhana Reviewed By: anna Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D34000 llvm-svn: 305086
* [Hexagon] Fixes and updates to the selection patternsKrzysztof Parzyszek2017-06-091-28/+52
| | | | | | | | - Add some missing patterns. - Use C4_cmplte in branch patterns. - Fix signedness of immediate operand in M2_accii. llvm-svn: 305085
* SelectionDAG: Remove deleted nodes from legalized set to avoid clash with ↵Zvi Rackover2017-06-091-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | newly created nodes Summary: During DAG legalization loop in SelectionDAG::Legalize(), bookkeeping of the SDNodes that were already legalized is implemented with SmallPtrSet (LegalizedNodes). This kind of set stores only pointers to objects, not the objects themselves. Unfortunately, if SDNode is deleted during legalization for some reason, LegalizedNodes set is not informed about this fact. This wouldn’t be so bad, if SelectionDAG wouldn’t reuse space deallocated after deletion of unused nodes, for creation of new ones. Because of this, new nodes, created during legalization often can have pointers identical to ones that have been previously legalized, added to the LegalizedNodes set, and deleted afterwards. This in turn causes, that newly created nodes, sharing the same pointer as deleted old ones, are present in LegalizedNodes *already at the moment of creation*, so we never call Legalize on them. The fix facilitates the fact, that DAG notifies listeners about each modification. I have registered DAGNodeDeletedListener inside SelectionDAG::Legalize, with a callback function that removes any pointer of any deleted SDNode from the LegalizedNodes set. With this modification, LegalizeNodes set does not contain pointers to nodes that were deleted, so newly created nodes can always be inserted to it, even if they share pointers with old deleted nodes. Patch by pawel.szczerbuk@intel.com The issue this patch addresses causes failures in an out-of-tree target, and i was not able to create a reproducer for an in-tree target, hence there is no test-case. Reviewers: delena, spatel, RKSimon, hfinkel, davide, qcolombet Reviewed By: delena Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D33891 llvm-svn: 305084
* Reland "[SelectionDAG] Enable target specific vector scalarization of calls ↵Simon Dardis2017-06-0915-105/+2117
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and returns" By target hookifying getRegisterType, getNumRegisters, getVectorBreakdown, backends can request that LLVM to scalarize vector types for calls and returns. The MIPS vector ABI requires that vector arguments and returns are passed in integer registers. With SelectionDAG's new hooks, the MIPS backend can now handle LLVM-IR with vector types in calls and returns. E.g. 'call @foo(<4 x i32> %4)'. Previously these cases would be scalarized for the MIPS O32/N32/N64 ABI for calls and returns if vector types were not legal. If vector types were legal, a single 128bit vector argument would be assigned to a single 32 bit / 64 bit integer register. By teaching the MIPS backend to inspect the original types, it can now implement the MIPS vector ABI which requires a particular method of scalarizing vectors. Previously, the MIPS backend relied on clang to scalarize types such as "call @foo(<4 x float> %a) into "call @foo(i32 inreg %1, i32 inreg %2, i32 inreg %3, i32 inreg %4)". This patch enables the MIPS backend to take either form for vector types. The previous version of this patch had a "conditional move or jump depends on uninitialized value". Reviewers: zoran.jovanovic, jaydeep, vkalintiris, slthakur Differential Revision: https://reviews.llvm.org/D27845 llvm-svn: 305083
* [clang-tidy] readability-function-size: add NestingThreshold param.Roman Lebedev2017-06-095-10/+78
| | | | | | | | | | | | | | | | | | | | | | | | Summary: Finds compound statements which create next nesting level after `NestingThreshold` and emits a warning. Do note that it warns about each compound statement that breaches the threshold, but not any of it's sub-statements, to have readable warnings. I was able to find only one coding style referencing nesting: - https://www.kernel.org/doc/html/v4.10/process/coding-style.html#indentation > In short, 8-char indents make things easier to read, and have the added benefit of warning you when you’re nesting your functions too deep. This seems too basic, i'm not sure what else to test. Are more tests needed? Reviewers: alexfh, aaron.ballman, sbenza Reviewed By: alexfh, aaron.ballman Subscribers: xazax.hun Tags: #clang-tools-extra Differential Revision: https://reviews.llvm.org/D32942 llvm-svn: 305082
* [SimplifyLibCalls] fix formatting; NFCSanjay Patel2017-06-091-1/+1
| | | | llvm-svn: 305081
* [ValueTracking] fix typo; NFCSanjay Patel2017-06-091-1/+1
| | | | llvm-svn: 305080
* [AMDGPU] Fix for issue in alloca to vector promotion passDavid Stuttard2017-06-092-6/+143
| | | | | | | | | | | | | | | Summary: Alloca promotion pass not dealing with non-canonical input Added some additional checks so the pass simply backs-off forms it can't deal with (non-canonical) Also added some test cases in non-canonical form to check that it no longer crashes Subscribers: arsenm, kzhuravl, wdng, nhaehnle, yaxunl, tpr, t-tye Differential Revision: https://reviews.llvm.org/D31710 llvm-svn: 305079
* [ARM] Custom machine-scheduler. NFCI.Javed Absar2017-06-091-0/+15
| | | | | | | | | This patch creates a customised machine-scheduler for ARM targets, so that subsequently DAG mutations etc can be added. Reviewed by: hahn, rengolin, rovka. Differential Revision: https://reviews.llvm.org/D34039 llvm-svn: 305078
* [MC] Fix compiler crash in AsmParser::LexNirav Dave2017-06-092-2/+6
| | | | | | | | | | | | | | | | When an empty comment is present in an assembly file, the compiler will crash because it checks the first character for '\n' or '\r'. The fix consists of also checking if the string is empty before accessing the *front* method of the StringRef. A test is included for the x86 target, but this issue is reproducible with other targets as well. Patch by Alexandru Guduleasa! Reviewers: niravd, grosbach, llvm-commits Reviewed By: niravd Differential Revision: https://reviews.llvm.org/D33993 llvm-svn: 305077
* [DebugInfo] Fix comment, NFC.Alexey Bataev2017-06-091-2/+2
| | | | llvm-svn: 305076
* [DebugInfo] Add kind of ImplicitParamDecl for emission of FlagObjectPointer.Alexey Bataev2017-06-0922-198/+263
| | | | | | | | | | | | | | | | | Summary: If the first parameter of the function is the ImplicitParamDecl, codegen automatically marks it as an implicit argument with `this` or `self` pointer. Added internal kind of the ImplicitParamDecl to separate 'this', 'self', 'vtt' and other implicit parameters from other kind of parameters. Reviewers: rjmccall, aaron.ballman Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D33735 llvm-svn: 305075
* [Hexagon] Add LLVM header to HexagonPatterns.tdKrzysztof Parzyszek2017-06-091-0/+9
| | | | llvm-svn: 305074
* [ELF] - Simplify gdb-index-empty.sGeorge Rimar2017-06-091-102/+66
| | | | | | | | Just simplifies existent test. Differential revision: https://reviews.llvm.org/D33986 llvm-svn: 305073
* [XRay] Fix computation of function size subject to XRay thresholdSerge Rogatch2017-06-091-1/+6
| | | | | | | | | | | | | | | | | | | | | | | Summary: Currently XRay compares its threshold against `Function::size()` . However, `Function::size()` returns the number of basic blocks (as I understand, such as cycle bodies, if/else bodies, switch-case bodies, etc.), rather than the number of instructions. The name of the parameter `-fxray-instruction-threshold=N`, as well as XRay documentation at http://llvm.org/docs/XRay.html , suggests that instructions should be counted, rather than the number of basic blocks. I see two options: 1. Count the number of MachineInstr`s in MachineFunction : this gives better estimate for the number of assembly instructions on the target. So a user can check in disassembly that the threshold works more or less correctly. 2. Count the number of Instruction`s in a Function : AFAIK, this gives correct number of IR instructions, which the user can check in IR listing. However, this number may be far (several times for small functions) from the number of assembly instructions finally emitted. Option 1 is implemented in this patch because I think that having the closer estimate for the number of assembly instructions emitted is more important than to have a clear definition of the metric. Reviewers: dberris, rengolin Reviewed By: dberris Subscribers: llvm-commits, iid_iunknown Differential Revision: https://reviews.llvm.org/D34027 llvm-svn: 305072
* [ELF] - Fix build bot.George Rimar2017-06-091-1/+1
| | | | llvm-svn: 305071
* Prevent RemoveDeadNodes from deleted already deleted node.Nirav Dave2017-06-092-0/+88
| | | | | | | | | | | | | | | | | | | | | This prevents against assertion errors like PR32659 which occur from a replacement deleting a node after it's been added to the list argument of RemoveDeadNodes. The specific failure from PR32659 does not currently happen, but it is still potentially possible. The underlying cause is that the callers of the change dfunction builds up a list of nodes to delete after having moved their uses and it possible that a move of a later node will cause a previously deleted nodes to be deleted. Reviewers: bkramer, spatel, davide Reviewed By: spatel Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D33731 llvm-svn: 305070
* [ELF] - Allow producing -r output if only empty archive is given.George Rimar2017-06-092-1/+11
| | | | | | | | | | | | | | | | | | | | | | This is used by linux kernel build system. (https://www.kernel.org/doc/Documentation/kbuild/makefiles.txt "3.2 Built-in object goals") It has for example next configuration for linking built-in.o files: drivers-y := $(patsubst %/, %/built-in.o, $(drivers-y)) drivers-$(CONFIG_PCI) += arch/ia64/pci/ ... drivers-$(CONFIG_OPROFILE) += arch/ia64/oprofile/ Im most simple case all CONFIG_* options are off. That means linker is called with empty input archive, emulation option and no inputs and expected to generate some relocatable output. ld.bfd is able to do that, we dont. Patch allows to support this case. Differential revision: https://reviews.llvm.org/D33937 llvm-svn: 305069
* Revert of r305066 "Reapply Frontend support for Nios2 target"Nikolai Bozhenov2017-06-095-270/+0
| | | | llvm-svn: 305068
* [clang-tools-extra] ReleaseNotes.rst: test commit: whitespace fixRoman Lebedev2017-06-091-3/+3
| | | | llvm-svn: 305067
* Reapply "Frontend support for Nios2 target"Nikolai Bozhenov2017-06-095-0/+270
| | | | | | | | | | | | | | Summary: - Implements TargetInfo class for Nios2 target. - Enables handling of -march and -mcpu options for Nios2 target. - Definition of Nios2 builtin functions. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D33356 Author: belickim <mateusz.belicki@intel.com> llvm-svn: 305066
OpenPOWER on IntegriCloud