summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fix a logic bug in x86 vector codegen: sext (zext (x) ) != sext (x) (PR20472).Sanjay Patel2014-08-282-25/+41
| | | | | | | | | | | | | | | | | Remove a block of code from LowerSIGN_EXTEND_INREG() that was added with: http://llvm.org/viewvc/llvm-project?view=revision&revision=177421 And caused: http://llvm.org/bugs/show_bug.cgi?id=20472 (more analysis here) http://llvm.org/bugs/show_bug.cgi?id=18054 The testcases confirm that we (1) don't remove a zext op that is necessary and (2) generate a pmovz instead of punpck if SSE4.1 is available. Although pmovz is 1 byte longer, it allows folding of the load, and so saves 3 bytes overall. Differential Revision: http://reviews.llvm.org/D4909 llvm-svn: 216679
* Do not introduce new shuffle patterns after operation legalization if ↵Owen Anderson2014-08-281-2/+1
| | | | | | | | | SHUFFLE_VECTOR was marked custom. The target independent DAG combine has no way to know if the shuffles it is introducing are ones that the target could support or not. llvm-svn: 216678
* Reverting r216675. This breaks some bots. Before this can be committed ↵Aaron Ballman2014-08-286-108/+19
| | | | | | again, I have to explore runtime ABI requirements with libc++abi. llvm-svn: 216677
* Objective-C IRGen. Fixes an assertion crash caused by inconsistentFariborz Jahanian2014-08-282-2/+19
| | | | | | | | linkage related to generation of OBJC_SELECTOR_REFERENCES symbol needed in generation of call to 'super' in a class method. // rdar://18150301 llvm-svn: 216676
* Throw a std::bad_array_new_length exception when the expression (or ↵Aaron Ballman2014-08-286-19/+108
| | | | | | constant-expression) passed to operator new[] results in overflow in conformance with [expr.new]p7. Fixes PR11644. llvm-svn: 216675
* Janitorial services: "Don’t duplicate function or class name at the ↵Sanjay Patel2014-08-281-134/+119
| | | | | | beginning of the comment." llvm-svn: 216674
* Remove local TLI vars that are just duplicates of the class var. No ↵Sanjay Patel2014-08-281-2/+0
| | | | | | functional change. llvm-svn: 216673
* Use local vars to improve readability. No functional change.Sanjay Patel2014-08-281-42/+37
| | | | | | | Completes what was started in r216611 and r216623. Used const refs instead of pointers; not sure if one is preferable to the other. llvm-svn: 216672
* Cache the memoization data for DynTypedNodes.Samuel Benzaquen2014-08-281-14/+5
| | | | | | | | | | | | | | Summary: Cache the memoization data for DynTypedNodes. It is free to do so on create(), but expensive to determine dynamically. Reviewers: klimek Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D5101 llvm-svn: 216671
* llgs: add proper exec support for Linux.Todd Fiala2014-08-287-10/+152
| | | | | | | | | | | | | | | This change: * properly captures execs in NativeProcessLinux. * clears out all non-main-thread thread metadata in NativeProcessLinux on exec. * adds a DidExec() method to the NativeProcessProtocol delegate. * clears out the auxv data cache when we exec (on Linux). This is a small part of the llgs for local Linux debugging work going on here: https://github.com/tfiala/lldb/tree/dev-llgs-local I'm breaking it into small patches. llvm-svn: 216670
* arm_acle: Fix error in ROR implementationYi Kong2014-08-281-4/+4
| | | | | | | | The logic in calculating the rotate amount was flawed. Thanks Pasi Parviainen for pointing out! llvm-svn: 216669
* lldb - towards AArch64 being recognised as platform architectureTodd Fiala2014-08-282-0/+38
| | | | | | | | See http://reviews.llvm.org/D4381. Change by Paul Osmialowski. llvm-svn: 216668
* Minor spelling correction.Sid Manning2014-08-281-1/+1
| | | | | | | | Reviewers: adasgupt, jverma, sidneym Differential Revision: http://reviews.llvm.org/D5025 llvm-svn: 216667
* Silence a -Wsign-compare warning. NFC.Aaron Ballman2014-08-281-1/+1
| | | | llvm-svn: 216666
* [ASan/Win] Add a test case for r216663 [-Zl vs LIBCMT vs asan_win_uar_thunk]Timur Iskhodzhanov2014-08-281-0/+12
| | | | llvm-svn: 216665
* [CMake] clangStaticAnalyzerFrontend: Add clangLex, corresponding to r216550.NAKAMURA Takumi2014-08-281-0/+1
| | | | llvm-svn: 216664
* [ASan/Win] Add the -Zl flag to avoid /DEFAULTLIB:libcmt directive in the ↵Timur Iskhodzhanov2014-08-281-1/+1
| | | | | | | | asan_win_uar_thunk object file This directive results in 'symbol already defined' when linking DLLs that use -MD llvm-svn: 216663
* [ARM] Change default ABI for AArch32 to be "aapcs" (was "apcs-gnu")Oliver Stannard2014-08-283-6/+51
| | | | | | | | | | | | | | The current default abi when no environment is given is "apcs-gnu", which is obsolete. This patch changes the default to "aapcs". "aapcs" has both hard- and soft-float variants, so the -mhard-float, -msoft-float and -mfloat-abi= options now all behave as expected when no environment is specified in the triple. While writing this I also noticed that a preprocessor test claims to be checking darwin, but is actually checking the defaults, which are different for darwin. llvm-svn: 216662
* [ubsan] Follow-up for r216657: fixed the line numbers in the test.Alexander Potapenko2014-08-281-2/+2
| | | | llvm-svn: 216661
* [PBQP] Only output debug information when requestedArnaud A. de Grandmaison2014-08-281-2/+2
| | | | llvm-svn: 216660
* InstCombine: Remove redundant combinesDavid Majnemer2014-08-281-15/+0
| | | | | | | | InstSimplify already handles icmp (X+Y), X (and things like it) appropriately. The first thing that InstCombine does is run InstSimplify on the instruction. llvm-svn: 216659
* arm_acle: Implement data processing intrinsicsYi Kong2014-08-282-13/+169
| | | | | | | | | | | | | | | | | Summary: ACLE 2.0 section 9.2 defines the following "miscellaneous data processing intrinsics": `__clz`, `__cls`, `__ror`, `__rev`, `__rev16`, `__revsh` and `__rbit`. `__clz` has already been implemented in the arm_acle.h header file. The rest are not supported yet. This patch completes ACLE data processing intrinsics. Reviewers: t.p.northover, rengolin Reviewed By: rengolin Subscribers: aemerson, mroth, llvm-commits Differential Revision: http://reviews.llvm.org/D4983 llvm-svn: 216658
* [UBSan] Temporarily disable checks for stack traces in UBSan reports on DarwinAlexander Potapenko2014-08-284-7/+17
| | | | | | | to make the tests green. Slow stack unwinding is disabled in libsanitizer on Darwin now. llvm-svn: 216657
* Fix: SLPVectorizer tried to move an instruction which was replaced by a ↵Erik Eckstein2014-08-282-4/+41
| | | | | | | | | | vector instruction. For a detailed description of the problem see the comment in the test file. The problematic moveBefore() calls are not required anymore because the new scheduling algorithm ensures a correct ordering anyway. llvm-svn: 216656
* Fixed test compatibility with MSVC codegen.Alexey Bataev2014-08-281-2/+1
| | | | llvm-svn: 216655
* Fix build against LLVM SVN >= r216488Michel Danzer2014-08-281-0/+5
| | | | | Tested-by: Aaron Watry <awatry@gmail.com> llvm-svn: 216654
* Fix build against LLVM SVN >= r216393Michel Danzer2014-08-281-0/+13
| | | | | Tested-by: Aaron Watry <awatry@gmail.com> llvm-svn: 216653
* [modules] When completing the redecl chain for an anonymous declaration in aRichard Smith2014-08-287-8/+33
| | | | | | | merged context, pull in the lexical decls in that context, since one of them may complete the redecl chain. llvm-svn: 216652
* Generate CMN when comparing a short int with minusDavid Xu2014-08-282-3/+87
| | | | llvm-svn: 216651
* Test commit. Fix whitespace from a previous patch of mine.Justin Hibbits2014-08-281-1/+1
| | | | llvm-svn: 216650
* [C++11] Support for capturing of variable length arrays in lambda expression.Alexey Bataev2014-08-2823-56/+375
| | | | | | Differential Revision: http://reviews.llvm.org/D4368 llvm-svn: 216649
* [MCJIT] Fix format specifiers for debug output in RuntimeDyld.Lang Hames2014-08-282-3/+3
| | | | | | More work on http://llvm.org/PR20640 llvm-svn: 216648
* MC: Don't crash when the COFF section limit is reachedDavid Majnemer2014-08-281-6/+11
| | | | | | | I've decided not to commit a test, it takes 2.5 seconds to run on my an incredibly strong machine. llvm-svn: 216647
* [x86] Fix whitespace and formatting around this function withChandler Carruth2014-08-281-4/+5
| | | | | | clang-format, no functionality changed. llvm-svn: 216646
* [x86] Hoist conditions from *every single if* in this routine toChandler Carruth2014-08-281-12/+12
| | | | | | | | | | | a single early exit. And factor the subsequent cast<> from all but one block into a single variable. No functionality changed. llvm-svn: 216645
* [x86] Inline an SSE4 helper function for INSERT_VECTOR_ELT lowering, noChandler Carruth2014-08-281-58/+45
| | | | | | | | | | functionality changed. Separating this into two functions wasn't helping. There was a decent amount of boilerplate duplicated, and some subsequent refactorings here will pull even more common code out. llvm-svn: 216644
* [x86] Clean up some tests to use FileCheck and combine two into a singleChandler Carruth2014-08-283-25/+59
| | | | | | | | | file. Changing code that is covered by these tests is just too hard to debug currently, and now it will be clear the nature of the changes. llvm-svn: 216643
* InstSimplify: Move a transform from InstCombine to InstSimplifyDavid Majnemer2014-08-284-44/+105
| | | | | | | | Several combines involving icmp (shl C2, %X) C1 can be simplified without introducing any new instructions. Move them to InstSimplify; while we are at it, make them more powerful. llvm-svn: 216642
* During cross field uninitialized checking, when processing an assignment,Richard Trieu2014-08-282-29/+57
| | | | | | | | | | | | | | | | | | | | | | don't mark the field as initialized until the next initializer instead of instantly. Since this checker is AST based, statements are processed in tree order instead of following code flow. This can result in different warnings from just reordering the code. Also changed to use one checker per constructor instead of creating a new checker per field. class T { int x, y; // Already warns T(bool b) : x(!b ? (1 + y) : (y = 5)) {} // New warning added here, previously (1 + y) comes after (y = 5) in the AST // preventing the warning. T(bool b) : x(b ? (y = 5) : (1 + y)) {} }; llvm-svn: 216641
* [FastISel] Undo phi node updates when falling-back to SelectionDAG.Juergen Ributzka2014-08-283-4/+34
| | | | | | | | | | | | | | | | | | | | The included test case would fail, because the MI PHI node would have two operands from the same predecessor. This problem occurs when a switch instruction couldn't be selected. This happens always, because there is no default switch support for FastISel to begin with. The problem was that FastISel would first add the operand to the PHI nodes and then fall-back to SelectionDAG, which would then in turn add the same operands to the PHI nodes again. This fix removes these duplicate PHI node operands by reseting the PHINodesToUpdate to its original state before FastISel tried to select the instruction. This fixes <rdar://problem/18155224>. llvm-svn: 216640
* [modules] Number anonymous declarations that are lexically within mergeableRichard Smith2014-08-2813-20/+165
| | | | | | contexts, so that we can merge them when we merge the surrounding context. llvm-svn: 216639
* Properly handle multiple nonnull attributes in CodeGenAlexey Samsonov2014-08-282-15/+33
| | | | llvm-svn: 216638
* Make it clear in the help that "breakpoint command add" will act on the last setJim Ingham2014-08-281-2/+3
| | | | | | | | breakpoint if no breakpoint id is specified. <rdar://problem/17885160> llvm-svn: 216637
* [PECOFF] Implement Win64 base relocationsRui Ueyama2014-08-282-9/+17
| | | | | | | | | | | | | | Image Base field in the PE/COFF header is used as hint for the loader. If the loader can load the executable at the specified address, that's fine, but if not, it has to load it at a different address. If that happens, the loader has to fix up the addresses in the executable by adding the offset. The list of addresses that need to be fixed is in .reloc section. This patch is to emit x64 .reloc section contents. llvm-svn: 216636
* Kill one of EmitCallArgs overloads. NFC.Alexey Samsonov2014-08-284-54/+38
| | | | llvm-svn: 216635
* [FastISel]Juergen Ributzka2014-08-283-2/+19
| | | | | | | | | | | | | | | | | | | | Currently instructions are folded very aggressively for AArch64 into the memory operation, which can lead to the use of killed operands: %vreg1<def> = ADDXri %vreg0<kill>, 2 %vreg2<def> = LDRBBui %vreg0, 2 ... = ... %vreg1 ... This usually happens when the result is also used by another non-memory instruction in the same basic block, or any instruction in another basic block. This fix teaches hasTrivialKill to not only check the LLVM IR that the value has a single use, but also to check if the register that represents that value has already been used. This can happen when the instruction with the use was folded into another instruction (in this particular case a load instruction). This fixes rdar://problem/18142857. llvm-svn: 216634
* [modules] Add an assert that we properly manage the IsCompleteDefinition flagRichard Smith2014-08-273-3/+9
| | | | | | | | on CXXRecordDecls when merging definitions, and make it pass by not trying to save and restore this flag across AST serialization/deserialization. For CXXRecordDecls, we have a separate mechanism to manage this. llvm-svn: 216633
* Revert "[FastISel][AArch64] Don't fold instructions too aggressively into ↵Juergen Ributzka2014-08-272-222/+16
| | | | | | | | the memory operation." Quentin pointed out that this is not the correct approach and there is a better and easier solution. llvm-svn: 216632
* Fix unaligned reads/writes in X86JIT and RuntimeDyldELF.Alexey Samsonov2014-08-273-49/+78
| | | | | | | | | | | | | | | | Summary: Introduce support::ulittleX_t::ref type to Support/Endian.h and use it in x86 JIT to enforce correct endianness and fix unaligned accesses. Test Plan: regression test suite Reviewers: lhames Subscribers: ributzka, llvm-commits Differential Revision: http://reviews.llvm.org/D5011 llvm-svn: 216631
* Add some logging around Process attaching and inferior exec handling.Todd Fiala2014-08-272-7/+75
| | | | llvm-svn: 216630
OpenPOWER on IntegriCloud