summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* [OCaml] Enable -g for debug builds.Peter Zotov2014-10-281-4/+3
| | | | | | We don't care about pre-3.12.1 anymore. llvm-svn: 220767
* [OCaml] Fix whitespace.Peter Zotov2014-10-2813-65/+65
| | | | llvm-svn: 220766
* Minimize the scope of some variables, NFC.David Blaikie2014-10-281-2/+2
| | | | llvm-svn: 220759
* X86: Implement the vectorcall calling conventionReid Kleckner2014-10-289-36/+227
| | | | | | | | | | | | | | | | | | | | This is a Microsoft calling convention that supports both x86 and x86_64 subtargets. It passes vector and floating point arguments in XMM0-XMM5, and passes them indirectly once they are consumed. Homogenous vector aggregates of up to four elements can be passed in sequential vector registers, but this part is not implemented in LLVM and will be handled in Clang. On 32-bit x86, it is similar to fastcall in that it uses ecx:edx as integer register parameters and is callee cleanup. On x86_64, it delegates to the normal win64 calling convention. Reviewers: majnemer Differential Revision: http://reviews.llvm.org/D5943 llvm-svn: 220745
* AArch64: enable Cortex-A57 FP balancing on Cortex-A53.Tim Northover2014-10-282-5/+12
| | | | | | | | | | Benchmarks have shown that it's harmless to the performance there, and having a unified set of passes between the two cores where possible helps big.LITTLE deployment. Patch by Z. Zheng. llvm-svn: 220744
* Remove the PreserveSource linker mode.Rafael Espindola2014-10-285-66/+45
| | | | | | | | | | | | | | | | | | | | I noticed that it was untested, and forcing it on caused some tests to fail: LLVM :: Linker/metadata-a.ll LLVM :: Linker/prefixdata.ll LLVM :: Linker/type-unique-odr-a.ll LLVM :: Linker/type-unique-simple-a.ll LLVM :: Linker/type-unique-simple2-a.ll LLVM :: Linker/type-unique-simple2.ll LLVM :: Linker/type-unique-type-array-a.ll LLVM :: Linker/unnamed-addr1-a.ll LLVM :: Linker/visibility1.ll If it is to be resurrected, it has to be fixed and we should probably have a -preserve-source command line option in llvm-mc and run tests with and without it. llvm-svn: 220741
* AArch64InstrInfo.h: Fix a warning introduced in clang r220703. ↵NAKAMURA Takumi2014-10-271-1/+1
| | | | | | [-Winconsistent-missing-override] llvm-svn: 220739
* [AVX512] Add vpermil variable versionAdam Nemet2014-10-272-2/+41
| | | | | | | | | This is implemented via a multiclass that derives from the vperm imm multiclass. Fixes <rdar://problem/18426089> llvm-svn: 220737
* [AVX512] Clean up avx512_perm_imm to use X86VectorVTInfoAdam Nemet2014-10-271-25/+22
| | | | | | | | No functionality change. No change in X86.td.expanded except that we only set the CD8 attributes for the memory variants. (This shouldn't be used unless we have a memory operand.) llvm-svn: 220736
* [AVX512] Derive vpermil* from avx512_perm_immAdam Nemet2014-10-271-14/+14
| | | | | | | | This used to derive from avx512_pshuf_imm which is confusing. NFC. Compared X86.td.expanded. llvm-svn: 220735
* [AVX512] Fix copy-and-paste bugs in vpermilAdam Nemet2014-10-271-3/+3
| | | | | | | | | 1) i512mem -> f512mem (this is the packed FP input being permuted) 2) element size is 64 bits in EVEX_CD8 for PD. (A good illustration why X86VectorVTInfo is useful) llvm-svn: 220734
* Make it easier to pass a custom diagnostic handler to the IR linker.Rafael Espindola2014-10-273-32/+46
| | | | llvm-svn: 220732
* Fix a stackmap bug introduced in r220710.Pete Cooper2014-10-272-6/+21
| | | | | | | | For a call to not return in to the stackmap shadow, the shadow must end with the call. To do this, we must insert any required nops *before* the call, and not after it. llvm-svn: 220728
* [ScalarEvolution] Guard dump() with #ifJingyue Wu2014-10-271-0/+2
| | | | | | to be consistent with its definition in ScalarEvolution.cpp llvm-svn: 220721
* Fix bug where sys::Wait could wait on wrong pid.Rafael Espindola2014-10-271-1/+0
| | | | | | | | Setting ChildPid to -1 would cause waitpid to wait for any child process. Patch by Daniel Reynaud! llvm-svn: 220717
* [FastISel][AArch64] Emit immediate version of icmp (subs) for null pointer ↵Juergen Ributzka2014-10-272-2/+26
| | | | | | | | | | | | check. This is a minor change to use the immediate version when the operand is a null value. This should get rid of an unnecessary 'mov' instruction in debug builds and align the code more with the one generated by SelectionDAG. This fixes rdar://problem/18785125. llvm-svn: 220713
* [FastISel][AArch64] Optimize compare-and-branch for i1 to use 'tbz'.Juergen Ributzka2014-10-272-2/+5
| | | | | | | | | Minor enhancement to use 'tbz' for i1 compare-and-branch to get rid of an 'and' instruction. This fixes rdar://problem/18784953. llvm-svn: 220712
* Stackmap shadows should consider call returns a branch target.Pete Cooper2014-10-272-4/+12
| | | | | | | | To avoid emitting too many nops, a stackmap shadow can include emitted instructions in the shadow, but these must not include branch targets. A return from a call should count as a branch target as patching over the instructions after the call would lead to incorrect behaviour for threads currently making that call, when they return. llvm-svn: 220710
* [FastISel][AArch64] Use 'cbz' also for null values (pointers).Juergen Ributzka2014-10-272-15/+23
| | | | | | | | | The pattern matching for a 'ConstantInt' value was too restrictive. Checking for a 'Constant' with a bull value is sufficient for using an 'cbz/cbnz' instruction. This fixes rdar://problem/18784732. llvm-svn: 220709
* [FastISel][AArch64] Don't fold the 'and' instruction into the 'tbz/tbnz' ↵Juergen Ributzka2014-10-272-2/+18
| | | | | | | | | | | | instruction if it is in a different basic block. This fixes a bug where the input register was not defined for the 'tbz/tbnz' instruction. This happened, because we folded the 'and' instruction from a different basic block. This fixes rdar://problem/18784013. llvm-svn: 220704
* [FastISel][AArch64] Fix load/store with frame indices.Juergen Ributzka2014-10-272-23/+46
| | | | | | | | | | | | At higher optimization levels the LLVM IR may contain more complex patterns for loads/stores from/to frame indices. The 'computeAddress' function wasn't able to handle this and triggered an assertion. This fix extends the possible addressing modes for frame indices. This fixes rdar://problem/18783298. llvm-svn: 220700
* [asan] experimental tracing for indirect calls, llvm part.Kostya Serebryany2014-10-272-6/+62
| | | | llvm-svn: 220699
* [PBQP] Remove a spurious 'typename' keyword. This was causing an error on MSVC.Lang Hames2014-10-271-1/+1
| | | | llvm-svn: 220690
* [PBQP] Clarify ambiguous-looking typedef.Lang Hames2014-10-271-1/+1
| | | | | | This was causing an error on the hexagon bots. llvm-svn: 220689
* [PBQP] Unique allowed-sets for nodes in the PBQP graph and use pairs of theseLang Hames2014-10-275-86/+247
| | | | | | | | | | | sets as keys into a cache of interference matrice values in the Interference constraint adder. Creating interference matrices was one of the large remaining time-sinks in PBQP. Caching them reduces the total compile time (when using PBQP) on the nightly test suite by ~10%. llvm-svn: 220688
* Add MapVector::rbegin(), MapVector::rend() to completment ↵Michael Gottesman2014-10-272-17/+36
| | | | | | | | | | MapVector::begin(), MapVector::end(). These just delegate to the underlying vector type in the MapVector. Also just add in some sanity unittests. llvm-svn: 220687
* Prune CRLF.NAKAMURA Takumi2014-10-278-146/+146
| | | | llvm-svn: 220678
* [ARM] Select VMAXNM and VMINNM regardless of operand orderOliver Stannard2014-10-272-18/+68
| | | | | | | | | | | | | | Currently, the ARM backend will select the VMAXNM and VMINNM for these C expressions: (a < b) ? a : b (a > b) ? a : b but not these expressions: (a > b) ? b : a (a < b) ? b : a This patch allows all of these expressions to be matched. llvm-svn: 220671
* [asan-asm-instrumentation] Added comment describing how asm instrumentation ↵Yuri Gorshenin2014-10-271-0/+64
| | | | | | | | | | | | | | works. Summary: [asan-asm-instrumentation] Added comment describing how asm instrumentation works. Reviewers: eugenis Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D5970 llvm-svn: 220670
* Re-commit r220667.Rui Ueyama2014-10-273-363/+22
| | | | | | C++ source given to check_cxx_source_compile should have define "main". llvm-svn: 220669
* Fix unicode chars into ascii in comment lines.NAKAMURA Takumi2014-10-271-1/+1
| | | | llvm-svn: 220668
* Revert "Include stddef.h before including cxxabi.h" to un-break buildbotRui Ueyama2014-10-273-21/+363
| | | | | | This reverts commit r220665. llvm-svn: 220667
* Include stddef.h before including cxxabi.hRui Ueyama2014-10-273-363/+21
| | | | | | | | | | On FreeBSD 10.0, size_t needs to be defined before including cxxabi.h. Currenty HAVE_CXXABI_H is not defined on FreeBSD because of that reason. This patch teaches cmake and configure how to include it. http://reviews.llvm.org/D5940 llvm-svn: 220665
* InstCombine: Fix a combine assuming that icmp operands were integersDavid Majnemer2014-10-272-0/+13
| | | | | | | | | An icmp may have pointer arguments, it isn't limited to integers or vectors of integers. This fixes PR21388. llvm-svn: 220664
* LinkModules.cpp: don't repeat names in comments.Rafael Espindola2014-10-271-69/+61
| | | | llvm-svn: 220662
* Remove some unnecessary casts.David Blaikie2014-10-261-2/+2
| | | | llvm-svn: 220658
* [PBQP] Tidying up as per Dave Blaikie's suggesions for r220642.Lang Hames2014-10-261-3/+3
| | | | llvm-svn: 220655
* [PBQP] Explicitly define copy/move operations for NodeMetadata to keep VS happy.Lang Hames2014-10-261-4/+31
| | | | | | | Hopefully this fixes the bug that was introduced in r220642, and not-quite-fixed in r220649. llvm-svn: 220653
* Add an option to the LTO code generator to disable vectorization during LTOArnold Schwaighofer2014-10-265-11/+32
| | | | | | | | | | | | | | | | | | | | We used to always vectorize (slp and loop vectorize) in the LTO pass pipeline. r220345 changed it so that we used the PassManager's fields 'LoopVectorize' and 'SLPVectorize' out of the desire to be able to disable vectorization using the cl::opt flags 'vectorize-loops'/'slp-vectorize' which the before mentioned fields default to. Unfortunately, this turns off vectorization because those fields default to false. This commit adds flags to the LTO library to disable lto vectorization which reconciles the desire to optionally disable vectorization during LTO and the desired behavior of defaulting to enabled vectorization. We really want tools to set PassManager flags directly to enable/disable vectorization and not go the route via cl::opt flags *in* PassManagerBuilder.cpp. llvm-svn: 220652
* [PBQP] Re-commit r220642 with a workaround for quirky Visual Studio behavior.Lang Hames2014-10-261-14/+26
| | | | | | | | | Apparently unique_ptr'ifying NodeMetadata exposed an issue in VS where it occasionally tries to synthesize copy constructors instead of moves. Hopefully explicitly deleting the copy constructor and defining the move constructor will fix this. llvm-svn: 220649
* [OCaml] Expose existing documentation in ocamldoc.Peter Zotov2014-10-261-43/+43
| | | | | | Patch by Gabriel Radanne <drupyog@zoho.com>. llvm-svn: 220648
* Revert "[PBQP] Unique-ptrify some PBQP Metadata structures. No functional ↵Hans Wennborg2014-10-261-8/+14
| | | | | | | | | | | | | | | | | | | | | | change." (r220642) It broke the Windows build: [1/19] Building CXX object lib\CodeGen\CMakeFiles\LLVMCodeGen.dir\RegAllocPBQP.cpp.obj C:\bb-win7\ninja-clang-i686-msc17-R\llvm-project\llvm\include\llvm/CodeGen/RegAllocPBQP.h(132) : error C2248: 'std::unique_ptr<_Ty>::unique_ptr' : cannot access private member declared in class 'std::unique_ptr<_Ty>' with [ _Ty=unsigned int [] ] D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\memory(1600) : see declaration of 'std::unique_ptr<_Ty>::unique_ptr' with [ _Ty=unsigned int [] ] This diagnostic occurred in the compiler generated function 'llvm::PBQP::RegAlloc::NodeMetadata::NodeMetadata(const llvm::PBQP::RegAlloc::NodeMetadata &)' llvm-svn: 220645
* [PBQP] Unique-ptrify some PBQP Metadata structures. No functional change.Lang Hames2014-10-261-14/+8
| | | | llvm-svn: 220642
* [PBQP] Tidy up CostAllocator.h: fix variable case, rename CostPool to ValuePool.Lang Hames2014-10-261-37/+37
| | | | | | | | No functional change. This just brings things more in-line with coding standards, and makes ValuePool's functionality clearer (it's not tied to pooling costs, and we may want to use it to hold other things in the future). llvm-svn: 220641
* AVX-512: Fixed encoding of VPBROADCASTM and added SKX forms of this instructionElena Demikhovsky2014-10-262-9/+25
| | | | llvm-svn: 220638
* LSR: Minor cleanup after Daniel's patch.Andrew Trick2014-10-251-4/+2
| | | | | | Combine the Inserted an Done sets into a Visited set. llvm-svn: 220623
* Fix LSR compile time.Andrew Trick2014-10-251-0/+5
| | | | | | | | | | | | This is a simple fix that brings the compilation time from 5min to 5s on a specific real-world example. It's a large chain of computation in a crypto routine (always a problem for SCEV). A unit test is not feasible and there would be no way to check it. The fix is just basic good practice for dealing with SCEVs, there's no risk of regression. Patch by Daniel Reynaud! llvm-svn: 220622
* [OCaml] hexagon can't run MCJIT tests, XFAIL it.Peter Zotov2014-10-251-1/+1
| | | | llvm-svn: 220621
* [OCaml] Unbreak Llvm_executionengine.initialize_native_target.Peter Zotov2014-10-252-14/+19
| | | | | | | | | | | | | First, return true on success, as it is the OCaml convention. Second, also initialize the native assembly printer, which is, despite the name, required for MCJIT operation. Since this function did not initialize the assembly printer earlier and no function to initialize native assembly printer was available elsewhere, it is safe to break its interface: it means that it simply could not be used successfully before. llvm-svn: 220620
* [OCaml] Expose Llvm_executionengine.ExecutionEngine.create_mcjit.Peter Zotov2014-10-254-53/+142
| | | | llvm-svn: 220619
OpenPOWER on IntegriCloud