summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [x86] Fix isOffsetSuitableForCodeModel kernel code model offsetBruno Cardoso Lopes2014-12-041-1/+1
| | | | | | | Offset == 0 is a valid offset for kernel code model according to the x86_64 System V ABI. Found by inspection, no testcase. llvm-svn: 223383
* [AArch64] Combining Load and IntToFp should check for neon availabilityWeiming Zhao2014-12-042-3/+20
| | | | llvm-svn: 223382
* Fix yet another unseen regression caused by r223113Asiri Rathnayake2014-12-043-15/+33
| | | | | | | | | | r223113 added support for ARM modified immediate assembly syntax. Which assumes all immediate operands are prefixed with a '#'. This assumption is wrong as per the ARMARM - which recommends that all '#' characters be treated optional. The current patch fixes this regression and adds a test case. A follow-up patch will expand the test coverage to other instructions. llvm-svn: 223381
* Fix thumbv4t indirect callsJonathan Roelofs2014-12-044-13/+96
| | | | | | | | | | | | | | | | | | | | | So there are a couple of issues with indirect calls on thumbv4t. First, the most 'obvious' instruction, 'blx' isn't available until v5t. And secondly, the next-most-obvious sequence: 'mov lr, pc; bx rN' doesn't DTRT in thumb code because the saved off pc has its thumb bit cleared, so when the callee returns we end up in ARM mode.... yuck. The solution is to 'bl' to a nearby landing pad with a 'bx rN' in it. We could cut down on code size by sharing the landing pads between call sites that are close enough, but for the moment let's do correctness first and look at performance later. Patch by: Iain Sandoe http://reviews.llvm.org/D6519 llvm-svn: 223380
* We should not pretend that an int is a valid ObjC pointer. If your number ↵Enrico Granata2014-12-041-5/+2
| | | | | | truly is a pointer, po (id)myNumber is a better alternative. Fixes rdar://16585032 llvm-svn: 223379
* Add a test case for argument type coercion in an invoke of a vararg functionPhilip Reames2014-12-041-0/+20
| | | | | | This would have caught the bug I fixed in 223370. llvm-svn: 223378
* Remove dead code from SymbolFileDWARF:Greg Clayton2014-12-042-188/+0
| | | | | | | | | | | | | | | | | | lldb::TypeSP SymbolFileDWARF::FindDefinitionTypeForDIE ( DWARFCompileUnit* dwarf_cu, const DWARFDebugInfoEntry *die, const lldb_private::ConstString &type_name); This function isn't used as it has been replaced by: lldb::TypeSP SymbolFileDWARF::FindDefinitionTypeForDWARFDeclContext ( const DWARFDeclContext &die_decl_ctx); I am about to change the way we resolve C/C++ class/struct/union types and want to clean up SymbolFileDWARF before I start. llvm-svn: 223376
* Fix a build breakage. Looks like the LLVM side of this change has been revertedEnrico Granata2014-12-041-1/+1
| | | | llvm-svn: 223375
* Add a section to Statepoint docs mentioning shared bugzilla search and ↵Philip Reames2014-12-041-0/+4
| | | | | | standard mailing lists llvm-svn: 223374
* Revert "Rewrite InputGraph's Group"Rui Ueyama2014-12-0420-239/+353
| | | | | | | | This reverts commit r223330 because it broke Darwin and ELF linkers in a way that we couldn't have caught with the existing test cases. llvm-svn: 223373
* Detect if the linker is gold and if so always use --gc-sections.Rafael Espindola2014-12-041-1/+15
| | | | llvm-svn: 223372
* Revert "r223364 - Revert r223347 which has caused crashes on bootstrap bots."Hal Finkel2014-12-042-4/+166
| | | | | | | | | | | | | | | | | | | | Reapply r223347, with a fix to not crash on uninserted instructions (or more precisely, instructions in uninserted blocks). bugpoint was able to reduce the test case somewhat, but it is still somewhat large (and relies on setting things up to be simplified during inlining), so I've not included it here. Nevertheless, it is clear what is going on and why. Original commit message: Restrict somewhat the memory-allocation pointer cmp opt from r223093 Based on review comments from Richard Smith, restrict this optimization from applying to globals that might resolve lazily to other dynamically-loaded modules, and also from dynamic allocas (which might be transformed into malloc calls). In short, take extra care that the compared-to pointer is really simultaneously live with the memory allocation. llvm-svn: 223371
* Fix a typo: use of cast where dyn_cast was intendedPhilip Reames2014-12-041-1/+1
| | | | | | | | This bug has the effect of converting a test of isGCRelocate(InvokeInst*) from a false return to a crash. This may be the root cause of the crash Joerg reported against r223137, but I'm still waiting for a clean build of clang to complete to be able to confirm. Once I've confirmed the issue, I'll submit a test case separately. llvm-svn: 223370
* test-release.sh: Add a way to specify --build to configureDaniel Sanders2014-12-041-18/+29
| | | | | | | | | | | | | | | | Summary: I currently have to specify --build=mips-linux-gnu or --build=mipsel-linux-gnu to configure in order to successfully recurse a 32-bit build of the compiler on my mips64-linux-gnu and mips64el-linux-gnu targets. This is a bug and will be fixed but in the meantime it will be useful to have a way to work around this. Reviewers: tstellarAMD Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D6522 llvm-svn: 223369
* Remove dead code. NFC.Rafael Espindola2014-12-049-208/+14
| | | | | | This interface was added 2 years ago but users never developed. llvm-svn: 223368
* clang-format: [JS] Don't put top-level dict literals on a single line.Daniel Jasper2014-12-042-9/+15
| | | | | | | These are often used for enums which apparently are easier to read if formatted with one element per line. llvm-svn: 223367
* Fix a minor regression introduced in r223113Asiri Rathnayake2014-12-042-11/+63
| | | | | | | | | | r223113 added support for ARM modified immediate assembly syntax. That patch has broken support for immediate expressions, as in: add r0, #(4 * 4) It wasn't caught because we don't have any tests for this feature. This patch fixes this regression and adds test cases. llvm-svn: 223366
* Use size_type in the interface exposed by SmallVector.Rafael Espindola2014-12-041-9/+9
| | | | | | | This matches std::vector and should avoid unnecessary masking to 32 bits when calling them on o 64 bits system. llvm-svn: 223365
* Revert r223347 which has caused crashes on bootstrap bots.Alexander Potapenko2014-12-042-165/+4
| | | | llvm-svn: 223364
* Revert "[Thumb/Thumb2] Added restrictions on PC, LR, SP in the register list ↵Rafael Espindola2014-12-044-183/+96
| | | | | | | | | | for PUSH/POP/LDM/STM. <Differential Revision: http://reviews.llvm.org/D6090>" This reverts commit r223356. It was failing check-all (MC/ARM/thumb.s in particular). llvm-svn: 223363
* [X86] Improve a dag-combine that handles a vector extract -> zext sequence.Michael Kuperstein2014-12-042-48/+110
| | | | | | | | | The current DAG combine turns a sequence of extracts from <4 x i32> followed by zexts into a store followed by scalar loads. According to measurements by Martin Krastev (see PR 21269) for x86-64, a sequence of an extract, movs and shifts gives better performance. However, for 32-bit x86, the previous sequence still seems better. Differential Revision: http://reviews.llvm.org/D6501 llvm-svn: 223360
* [ELF] Adjust ELF header entry symbol value if this symbol is microMIPS encodedSimon Atanasyan2014-12-047-25/+190
| | | | | | | To find an AtomLayout object for the given symbol I replace the `Layout::findAtomAddrByName` method by `Layout::findAtomLayoutByName` method. llvm-svn: 223359
* Fix PR21684 - Ellipsis following an 'auto' parameter sans name/ID Faisal Vali2014-12-042-7/+12
| | | | | | | | should indicate a c++ parameter pack not a c-variadic. int i = [](auto...) { return 0; }(); // OK now. llvm-svn: 223357
* [Thumb/Thumb2] Added restrictions on PC, LR, SP in the register list for ↵Jyoti Allur2014-12-044-96/+183
| | | | | | PUSH/POP/LDM/STM. <Differential Revision: http://reviews.llvm.org/D6090> llvm-svn: 223356
* [msan] Put the coverage files for coverage-levels.cc into a temporary dir.Alexander Potapenko2014-12-041-4/+5
| | | | llvm-svn: 223355
* [X86] Simplify code. NFC.Andrea Di Biagio2014-12-041-16/+6
| | | | | | | | Replaced some logic that checked if a build_vector node is doing a splat of a non-undef value with a call to method BuildVectorSDNode::getSplatValue(). No functional change intended. llvm-svn: 223354
* Cleanup of the fix done recently for a lldb-mi hang on OSX.Hafiz Abid Qadeer2014-12-041-14/+5
| | | | | | | | | It was observed that we dont need to set stdin to unbuffered and setting console to non-canonical mode. Patch originally came from "Ilia K <ki.stfu@gmail.com>" llvm-svn: 223353
* Make getInsertArgumentAdjuster insert extra arguments to the end by default.Alexander Kornienko2014-12-041-2/+3
| | | | llvm-svn: 223352
* test-release.sh: Correct the logged configure command to match the one ↵Daniel Sanders2014-12-041-1/+2
| | | | | | | | | actually issued. --disable-timestamps was added to the configure command way back in r142647 but the command that echos this command to the log was not updated at the time. llvm-svn: 223351
* Use DomTree in MachineSink to sink over diamonds.Patrik Hagglund2014-12-042-16/+19
| | | | | | | | | | | | | | | | | | | | | According to a previous FIXME comment we now not only look at MBB successors, but also handle code sinking past them: x = computation if () {} else {} use x The instruction could be sunk over the whole diamond for the if/then/else (or loop, etc), allowing it to be sunk into other blocks after that. Modified test added in r204522, due to one spill less present. Minor fixes in comments. Patch provided by Jonas Paulsson. Reviewed by Hal Finkel. llvm-svn: 223350
* [InstCombine] Minor optimization for bswap with binary opsSimon Pilgrim2014-12-044-15/+236
| | | | | | | | | | | | | | | | | Added instcombine optimizations for BSWAP with AND/OR/XOR ops: OP( BSWAP(x), BSWAP(y) ) -> BSWAP( OP(x, y) ) OP( BSWAP(x), CONSTANT ) -> BSWAP( OP(x, BSWAP(CONSTANT) ) ) Since its just a one liner, I've also added BSWAP to the DAGCombiner equivalent as well: fold (OP (bswap x), (bswap y)) -> (bswap (OP x, y)) Refactored bswap-fold tests to use FileCheck instead of just checking that the bswaps had gone. Differential Revision: http://reviews.llvm.org/D6407 llvm-svn: 223349
* Masked Load / Store Intrinsics - the CodeGen part.Elena Demikhovsky2014-12-0427-12/+873
| | | | | | | | | | | | | | | | | | I'm recommiting the codegen part of the patch. The vectorizer part will be send to review again. Masked Vector Load and Store Intrinsics. Introduced new target-independent intrinsics in order to support masked vector loads and stores. The loop vectorizer optimizes loops containing conditional memory accesses by generating these intrinsics for existing targets AVX2 and AVX-512. The vectorizer asks the target about availability of masked vector loads and stores. Added SDNodes for masked operations and lowering patterns for X86 code generator. Examples: <16 x i32> @llvm.masked.load.v16i32(i8* %addr, <16 x i32> %passthru, i32 4 /* align */, <16 x i1> %mask) declare void @llvm.masked.store.v8f64(i8* %addr, <8 x double> %value, i32 4, <8 x i1> %mask) Scalarizer for other targets (not AVX2/AVX-512) will be done in a separate patch. http://reviews.llvm.org/D6191 llvm-svn: 223348
* Restrict somewhat the memory-allocation pointer cmp opt from r223093Hal Finkel2014-12-042-4/+165
| | | | | | | | | | Based on review comments from Richard Smith, restrict this optimization from applying to globals that might resolve lazily to other dynamically-loaded modules, and also from dynamic allocas (which might be transformed into malloc calls). In short, take extra care that the compared-to pointer is really simultaneously live with the memory allocation. llvm-svn: 223347
* Add missing test fileJean-Daniel Dupas2014-12-041-0/+0
| | | | llvm-svn: 223346
* clang-format: More restrictively classify import declarations.Daniel Jasper2014-12-042-1/+6
| | | | | | | | | | | Before: import::SomeFunction(aaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaa); After: import::SomeFunction(aaaaaaaaaaaaaaaaaaaaaaaaaaa, aaaaaaaaaaaaaaaaaaaaaaaaaaaaa); llvm-svn: 223345
* clang-formatted ranged loops and assignment, NFC.Yaron Keren2014-12-041-12/+12
| | | | llvm-svn: 223344
* Add mach-o LC_RPATH support to llvm-objdumpJean-Daniel Dupas2014-12-045-0/+39
| | | | | | | | | | Summary: Add rpath load command support in Mach-O object and update llvm-objdump to use it. Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D6512 llvm-svn: 223343
* [OPENMP] Codegen for 'omp master' directiveAlexey Bataev2014-12-044-3/+132
| | | | | | | | | | | | | | Patch adds 2 library functions to OpenMPRuntime class - int32 kmpc_master(ident_t *, int32 gtid) and void kmpc_end_master(ident_t *, int32 gtid); For 'omp master' directive the next code is generated: if (__kmpc_master(loc, gtid)) { <Associated structured block>; __kmpc_end_master(log, gtid); } Differential Revision: http://reviews.llvm.org/D6473 llvm-svn: 223342
* [PECOFF] Improve /export compatibility.Rui Ueyama2014-12-044-42/+63
| | | | | | | | | | | | | | | | | | | | | Looks like the rule of /export is more complicated than I was thinking. If /export:foo, for example, is given, and if the actual symbol name in an object file is _foo@<number>, we need to export that symbol as foo, not as the mangled name. If only /export:_foo@<number> is given, the symbol is exported as _foo@<number>. If both /export:foo and /export:_foo@<number> are given, they are considered as duplicates, and the linker needs to choose the unmangled name. The basic idea seems that the linker needs to export a symbol with the same name as given as /export. We exported mangled symbols. This patch fixes that issue. llvm-svn: 223341
* Always emit kernel arg info for SPIR.Sameer Sahasrabuddhe2014-12-044-13/+24
| | | | | | | | | | | | | | | http://llvm.org/bugs/show_bug.cgi?id=21555 Currently, kernel argument metadata is omitted unless the "-cl-kernel-arg-info" option is specified. But the SPIR 1.2 spec requires that all metadata except kernel_arg_name should always be emitted, and kernel_arg_name is only emitted when "-cl-kernel-arg-info" is specified. Patch ported by Ryan Burn from the Khronos SPIR generator. https://github.com/KhronosGroup/SPIR llvm-svn: 223340
* [X86] Clean up whitespace as well as minor coding styleMichael Liao2014-12-0433-409/+403
| | | | llvm-svn: 223339
* CodeGen: refactor ARM builtin handlingSaleem Abdulrasool2014-12-042-20/+22
| | | | | | | | Create a helper function to construct a value for the ARM hint intrinsic rather than inling the construction. In order to avoid the use of the sentinel value, inline the use of intrinsic instruction retrieval. NFC. llvm-svn: 223338
* Revert "Add missing test dependency and use a more canonical target name."Rafael Espindola2014-12-041-1/+0
| | | | | | | | | | This reverts commit r223336. NAKAMURA Takumi did the same thing in r223332! Sorry about the noise. llvm-svn: 223337
* Add missing test dependency and use a more canonical target name.Rafael Espindola2014-12-041-0/+1
| | | | llvm-svn: 223336
* [Hexagon] Adding lit exception if Hexagon isn't built.Colin LeMahieu2014-12-041-0/+3
| | | | llvm-svn: 223335
* [Hexagon] Marking some instructions as CodeGenOnly=0 and adding disassembly ↵Colin LeMahieu2014-12-044-3/+27
| | | | | | tests. llvm-svn: 223334
* CMake: try to actually fix the regexes for setting HOST_LINK_VERSION this ↵Hans Wennborg2014-12-041-4/+4
| | | | | | | | | | | | | | time (PR21268) The regex should not accept an empty version number. The previous attempt at r223106 failed, and the build was still erroring: CMake Error at tools/clang/CMakeLists.txt:269 (string): string sub-command REGEX, mode REPLACE regex "[^0-9]*([0-9.]*).*" matched an empty string. llvm-svn: 223333
* Introduce "llvm-ranlib" as a name of targets since ↵NAKAMURA Takumi2014-12-042-1/+2
| | | | | | Object/archive-symtab.test requires llvm-ranlib. llvm-svn: 223332
* Sort by alphabetical order.NAKAMURA Takumi2014-12-041-1/+1
| | | | llvm-svn: 223331
* Rewrite InputGraph's GroupRui Ueyama2014-12-0420-353/+239
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The aim of this patch is to reduce the excessive abstraction from the InputGraph. We found that even a simple thing, such as sorting input files (Mach-O) or adding a new file to the input file list (PE/COFF), is nearly impossible with the InputGraph abstraction, because it hides too much information behind it. As a result, we invented complex interactions between components (e.g. notifyProgress() mechanism) and tricky code to work around that limitation. There were many occasions that we needed to write awkward code. This patch is a first step to make it cleaner. As a first step, this removes Group class from the InputGraph. The grouping feature is now directly handled by the Resolver. notifyProgress is removed since we no longer need that. I could have cleaned it up even more, but in order to keep the patch minimum, I focused on Group. SimpleFileNode class, a container of File objects, is now limited to have only one File. We shold have done this earlier. We used to allow putting multiple File objects to FileNode. Although SimpleFileNode usually has only one file, the Driver class actually used that capability. I modified the Driver class a bit, so that one FileNode is created for each input File. We should now probably remove SimpleFileNode and directly store File objects to the InputGraph in some way, because a container that can contain only one object is useless. This is a TODO. Mach-O input files are now sorted before they are passe to the Resolver. DarwinInputGraph class is no longer needed, so removed. PECOFF still has hacky code to add a new file to the input file list. This will be cleaned up in another patch. llvm-svn: 223330
OpenPOWER on IntegriCloud