summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* [GVN] Format variable name.Tilmann Scheller2014-09-041-2/+2
| | | | | | Local variables need to start with an upper case letter. llvm-svn: 217133
* Fix build faliure introduced by r217129.Frederic Riss2014-09-042-3/+3
| | | | | | Looks like one can't put 'const uint8_t' as ArrayRef contained type. It fails to build with libstdc++. llvm-svn: 217132
* X86 Intrinsics table - changed to a static table sorted by intrinsic id.Elena Demikhovsky2014-09-042-204/+226
| | | | | | Used binary search over the tables. llvm-svn: 217131
* Rename DWARFContext::getLineTableForCompileUnit to getLineTableForUnit.Frederic Riss2014-09-042-19/+18
| | | | | | | All DWARFUnits can have line information. Rename and change arguments' type accordingly. llvm-svn: 217130
* Add DWARFFormValue::getAsBlock() and add FC_Flag as an acceptable class for ↵Frederic Riss2014-09-042-1/+10
| | | | | | | | an unsigned constant. To be used in further patches that improve the dumpers. llvm-svn: 217129
* Add a DWARFContext& member in DWARFUnit.Frederic Riss2014-09-045-24/+29
| | | | | | | | | | The DWARFContext will be used to pass global 'context' down, like pointers to related debug info sections or command line options. The first use will be for the debug_info dumper to be able to access other debug info section to dump eg. Location Expression inline in the debug_info dump. llvm-svn: 217128
* [MCJIT] Make sure eh-frame fixups use the target's pointer type, not the host's.Lang Hames2014-09-047-39/+93
| | | | | | | If the wrong pointer type is used it can cause corruption of the frame description entries. llvm-svn: 217124
* Use vector constructor instead of a for loop to initialize entries.Craig Topper2014-09-041-4/+2
| | | | llvm-svn: 217123
* [MCJIT] Add command-line argument to llvm-rtdyld to specify target addresses forLang Hames2014-09-045-12/+137
| | | | | | | | | sections. This allows fine-grained control of the memory layout of hypothetical target processes for testing purposes. llvm-svn: 217122
* Revert r216803 "[MachineSinking] Clear kill flag of all operands at all ↵Juergen Ributzka2014-09-042-40/+3
| | | | | | | | | their uses." This reverts commit r216803, because it might have broken the buildbot. The issue is tracked in PR20842. llvm-svn: 217120
* [FastISel][AArch64] Cleanup and simplify 'fastSelectInstruction'. NFC.Juergen Ributzka2014-09-041-75/+12
| | | | llvm-svn: 217119
* [FastISel][AArch64] Add target-specific lowering for logical operations.Juergen Ributzka2014-09-044-34/+307
| | | | | | | | | This change adds support for immediate and shift-left folding into logical operations. This fixes rdar://problem/18223183. llvm-svn: 217118
* [x86] Teach the new vector shuffle lowering about the zero maskingChandler Carruth2014-09-042-22/+152
| | | | | | | | | | | abilities of INSERTPS which are really powerful and come up in very important contexts such as forming diagonal matrices, etc. With this I ended up being able to remove the somewhat weird helper I added for INSERTPS because we can collapse the entire state to a no-op mask. Added a bunch of tests for inserting into a zero-ish vector. llvm-svn: 217117
* IndVarSimplify: Address review comments for r217102David Majnemer2014-09-041-4/+7
| | | | | | No functional change intended, just some cleanups and comments added. llvm-svn: 217115
* llvm-cov: Don't pointlessly create a unique_ptr (NFC)Justin Bogner2014-09-041-9/+7
| | | | | | | There's no ownership going on here, and no reason to heap allocate this object. llvm-svn: 217113
* Revert accidentally committed r217107Matt Arsenault2014-09-032-25/+8
| | | | | | "Don't treat 0 as a special value for int attributes." llvm-svn: 217110
* R600/SI: Un-move pattern I forgot to remove in last commitMatt Arsenault2014-09-031-5/+5
| | | | llvm-svn: 217109
* R600/SI: Try to keep i32 mul on SALUMatt Arsenault2014-09-035-23/+150
| | | | | | | Also fix bug this exposed where when legalizing an immediate operand, a v_mov_b32 would be created with a VSrc dest register. llvm-svn: 217108
* Don't treat 0 as a special value for int attributes.Matt Arsenault2014-09-032-8/+25
| | | | | | | Split the get() to not use a default value. This way attributes can be added that have 0 as a legitimate value. llvm-svn: 217107
* [asan] fix debug info produced for asan-coverage=2Kostya Serebryany2014-09-032-1/+78
| | | | llvm-svn: 217106
* Enabling LLVM & Clang to be cross-compiled using CMake from a single ↵Chris Bieneman2014-09-035-34/+105
| | | | | | | | configuration command line The basic idea is similar to the existing cross compilation support. A directory must be configured to build host versions of tablegen tools and llvm-config. This directory can be user provided (and configured), or it can be created during the build. During a build the native build directory will be configured and built to supply the tablegen tools used during the build. A user could also explicitly provide the tablegen executables to run on the CMake command line. llvm-svn: 217105
* IndVarSimplify: Don't let LFTR compare against a poison valueDavid Majnemer2014-09-036-19/+258
| | | | | | | | | | | | | | LinearFunctionTestReplace tries to use the *next* indvar to compare against when possible. However, it may be the case that the calculation for the next indvar has NUW/NSW flags and that it may only be safely used inside the loop. Using it in a comparison to calculate the exit condition could result in observing poison. This fixes PR20680. Differential Revision: http://reviews.llvm.org/D5174 llvm-svn: 217102
* [x86] Teach the new vector shuffle lowering about the simplest ofChandler Carruth2014-09-032-4/+41
| | | | | | | | | | 'insertps' patterns. This replaces two shuffles with a single insertps in very common cases. My next patch will extend this to leverage the zeroing capabilities of insertps which will allow it to be used in a much wider set of cases. llvm-svn: 217100
* [x86] Teach the asm comment printing to only print the clarification ofChandler Carruth2014-09-034-49/+64
| | | | | | | | | | an immediate operand when we don't have instruction-specific comments. This ensures that instruction-specific comments are attached to the same line as the instruction which is important for using them to write readable and maintainable tests. My next commit will just such a test. llvm-svn: 217099
* [asan] add -asan-coverage=3: instrument all blocks and critical edges. Kostya Serebryany2014-09-032-2/+21
| | | | llvm-svn: 217098
* unique_ptrify RuntimeDyldImpl::loadObjectDavid Blaikie2014-09-032-8/+7
| | | | | | | | | | I'm not sure this is a particularly helpful API (to pass ownership and then return it unconditionally) rather than just pass the underlying object by non-const reference, but this was the original API so I'll just make it more safe/stable and anyone else is free to adjust that at their whim, of course. llvm-svn: 217081
* Refactor AtomicExpandPass and add a generic isAtomic() method to InstructionRobin Morisset2014-09-039-71/+118
| | | | | | | | | | | | | | | | | | | | | Summary: Split shouldExpandAtomicInIR() into different versions for Stores/Loads/RMWs/CmpXchgs. Makes runOnFunction cleaner (no more redundant checking/casting), and will help moving the X86 backend to this pass. This requires a way of easily detecting which instructions are atomic. I followed the pattern of mayReadFromMemory, mayWriteOrReadMemory, etc.. in making isAtomic() a method of Instruction implemented by a switch on the opcodes. Test Plan: make check Reviewers: jfb Subscribers: mcrosier, llvm-commits Differential Revision: http://reviews.llvm.org/D5035 llvm-svn: 217080
* Make some helpers static or move into the llvm namespace.Benjamin Kramer2014-09-034-6/+6
| | | | llvm-svn: 217077
* Use target-dependent emitLeading/TrailingFence instead of the ↵Robin Morisset2014-09-035-95/+153
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | target-independent insertLeading/TrailingFence (in AtomicExpandPass) Fixes two latent bugs: - There was no fence inserted before expanded seq_cst load (unsound on Power) - There was only a fence release before seq_cst stores (again unsound, in particular on Power) It is not even clear if this is correct on ARM swift processors (where release fences are DMB ishst instead of DMB ish). This behaviour is currently preserved on ARM Swift as it is not clear whether it is incorrect. I would love to get documentation stating whether it is correct or not. These two bugs were not triggered because Power is not (yet) using this pass, and these behaviours happen to be (mostly?) working on ARM (although they completely butchered the semantics of the llvm IR). See: http://lists.cs.uiuc.edu/pipermail/llvmdev/2014-August/075821.html for an example of the problems that can be caused by the second of these bugs. I couldn't see a way of fixing these in a completely target-independent way without adding lots of unnecessary fences on ARM, hence the target-dependent parts of this patch. This patch implements the new target-dependent parts only for ARM (the default of not doing anything is enough for AArch64), other architectures will use this infrastructure in later patches. llvm-svn: 217076
* [FastISel][tblgen] Rename tblgen generated FastISel functions. NFC.Juergen Ributzka2014-09-038-171/+171
| | | | | | | | | | This is the final round of renaming. This changes tblgen to emit lower-case function names for FastEmitInst_* and FastEmit_*, and updates all its uses in the source code. Reviewed by Eric llvm-svn: 217075
* [FastISel] Rename public visible FastISel functions. NFC.Juergen Ributzka2014-09-038-207/+206
| | | | | | | | | | | | | | | | | | | | | This commit renames the following public FastISel functions: LowerArguments -> lowerArguments SelectInstruction -> selectInstruction TargetSelectInstruction -> fastSelectInstruction FastLowerArguments -> fastLowerArguments FastLowerCall -> fastLowerCall FastLowerIntrinsicCall -> fastLowerIntrinsicCall FastEmitZExtFromI1 -> fastEmitZExtFromI1 FastEmitBranch -> fastEmitBranch UpdateValueMap -> updateValueMap TargetMaterializeConstant -> fastMaterializeConstant TargetMaterializeAlloca -> fastMaterializeAlloca TargetMaterializeFloatZero -> fastMaterializeFloatZero LowerCallTo -> lowerCallTo Reviewed by Eric llvm-svn: 217074
* [JIT] Add an out-of-line definition for the virtual destructor inChandler Carruth2014-09-032-0/+16
| | | | | | | JITEventListener. This used to be in the old JIT (last line of the file) and everyone just "happened" to pick it up from there. =/ Doh. llvm-svn: 217073
* [x86] Add an SSE4.1 mode to this test.Chandler Carruth2014-09-031-0/+1
| | | | llvm-svn: 217072
* Remove resetSubtargetFeatures as it is unused.Eric Christopher2014-09-038-71/+9
| | | | llvm-svn: 217071
* Remove unnecessary getTarget call now that the subtarget is cachedEric Christopher2014-09-033-6/+4
| | | | | | on the machine function. llvm-svn: 217070
* house cleaning: "Don’t duplicate function or class name at the beginning ↵Sanjay Patel2014-09-032-73/+56
| | | | | | of the comment." llvm-svn: 217069
* Add writeFileWithSystemEncoding to LibLLVMSuppor.Rafael Espindola2014-09-036-4/+167
| | | | | | | | | | | | | | | | | | | | This patch adds to LLVMSupport the capability of writing files with international characters encoded in the current system encoding. This is relevant for Windows, where we can either use UTF16 or the current code page (the legacy Windows international characters). On UNIX, the file is always saved in UTF8. This will be used in a patch for clang to thoroughly support response files creation when calling other tools, addressing PR15171. On Windows, to correctly support internationalization, we need the ability to write response files both in UTF16 or the current code page, depending on the tool we will call. GCC for mingw, for instance, requires files to be encoded in the current code page. MSVC tools requires files to be encoded in UTF16. Patch by Rafael Auler! llvm-svn: 217068
* unique_ptrify MCJIT::emitObjectDavid Blaikie2014-09-032-5/+5
| | | | llvm-svn: 217067
* unique_ptrify a bunch of stuff through RuntimeDyld::loadObjectDavid Blaikie2014-09-0311-68/+71
| | | | llvm-svn: 217065
* [x86] Make this test check everything for both SSE2 and AVX1 modes,Chandler Carruth2014-09-031-83/+97
| | | | | | using a common 'all' prefix for the common test output. llvm-svn: 217063
* [FastISel] Some long overdue spring cleaning of FastISel.Juergen Ributzka2014-09-033-650/+554
| | | | | | | | | | | | | Things got a little bit messy over the years and it is time for a little bit spring cleaning. This first commit is focused on the FastISel base class itself. It doxyfies all comments, C++11fies the code where it makes sense, renames internal methods to adhere to the coding standard, and clang-formats the files. Reviewed by Eric llvm-svn: 217060
* Fix downcasts of unaligned empty/tombstone DenseMap keys for ↵Alexey Samsonov2014-09-031-1/+10
| | | | | | | | | | | | | | | | DenseMap<AssertVH<T>, Foo>. Test Plan: llvm regression test suite Reviewers: chandlerc, rsmith Reviewed By: rsmith Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D4976 llvm-svn: 217058
* Add a regression test to sanity check the PBQP allocator.Lang Hames2014-09-031-0/+29
| | | | llvm-svn: 217057
* unique_ptrify IRObjectFile::createIRObjectFileDavid Blaikie2014-09-034-8/+7
| | | | | | | | I took a guess at the changes to the gold plugin, because that doesn't seem to build by default for me. Not sure what dependencies I might be missing for that. llvm-svn: 217056
* [FastISel][AArch64] Move unconditional branch handling into 'SelectBranch'. NFC.Juergen Ributzka2014-09-031-9/+7
| | | | llvm-svn: 217054
* Removing static initializer from Debug.cpp by converting to a ManagedStatic.Chris Bieneman2014-09-031-4/+5
| | | | | | | | This is part of our larger effort to remove static initializers from LLVM libraries. Reviewed by: chandlerc llvm-svn: 217053
* unique_ptrify MachOUniversalBinary::createDavid Blaikie2014-09-033-5/+5
| | | | llvm-svn: 217052
* Preserve IR flags (nsw, nuw, exact, fast-math) in SLP vectorizer (PR20802).Sanjay Patel2014-09-0313-29/+404
| | | | | | | | | | | | | | | | | The SLP vectorizer should propagate IR-level optimization hints/flags (nsw, nuw, exact, fast-math) when converting scalar instructions into vectors. But this isn't a simple copy - we need to take the intersection (the logical 'and') of the sets of flags on the scalars. The solution is further complicated because we can have non-uniform (non-SIMD) vector ops after: http://reviews.llvm.org/D4015 http://llvm.org/viewvc/llvm-project?view=revision&revision=211339 The vast majority of changed files are existing tests that were not propagating IR flags, but I've also added a new test file for focused testing of IR flag possibilities. Differential Revision: http://reviews.llvm.org/D5172 llvm-svn: 217051
* Pass a && to getLazyBitcodeModule.Rafael Espindola2014-09-037-12/+15
| | | | | | | | This forces callers to use std::move when calling it. It is somewhat odd to have code with std::move that doesn't always move, but it is also odd to have code without std::move that sometimes moves. llvm-svn: 217049
* Ensure ErrorOr cannot implicitly invoke explicit ctors of the underlying type.David Blaikie2014-09-034-16/+61
| | | | | | | | | | | | | | | | | | | | | | | | An unpleasant surprise while migrating unique_ptrs (see changes in lib/Object): ErrorOr<int*> was implicitly convertible to ErrorOr<std::unique_ptr<int>>. Keep the explicit conversions otherwise it's a pain to convert ErrorOr<int*> to ErrorOr<std::unique_ptr<int>>. I'm not sure if there should be more SFINAE on those explicit ctors (I could check if !is_convertible && is_constructible, but since the ctor has to be called explicitly I don't think there's any need to disable them when !is_constructible - they'll just fail anyway. It's the converting ctors that can create interesting ambiguities without proper SFINAE). I had to SFINAE the explicit ones because otherwise they'd be ambiguous with the implicit ones in an explicit context, so far as I could tell. The converting assignment operators seemed unnecessary (and similarly buggy/dangerous) - just rely on the converting ctors to convert to the right type for assignment instead. llvm-svn: 217048
OpenPOWER on IntegriCloud