summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [ARM,AArch64] Fix __rev16l and __rev16ll intrinsicsOliver Stannard2015-11-162-16/+46
| | | | | | | | | | | | | | | | | | | | These two intrinsics are defined in arm_acle.h. __rev16l needs to rotate by 16 bits, bit it was actually rotating by 2 bits. For AArch64, where long is 64 bits, this would still be wrong. __rev16ll was incorrect, it reversed the bytes in each 32-bit word, rather than each 16-bit halfword. The correct implementation is to apply __rev16 to the top and bottom words of the 64-bit value. For AArch32 targets, these get compiled down to the hardware rev16 instruction at -O1 and above. For AArch64 targets, the 64-bit ones get compiled to two 32-bit rev16 instructions, because there is not currently a pattern for the 64-bit rev16 instruction. Differential Revision: http://reviews.llvm.org/D14609 llvm-svn: 253211
* [mips][ias] Remove spurious ';' from inline assembly test.Daniel Sanders2015-11-161-4/+4
| | | | | | | IAS will not emit it. NFC at the moment but will prevent a test failure once IAS is enabled. llvm-svn: 253210
* [mips][ias] Accept $31 or $ra in hf16call32.ll. IAS prints the latter.Daniel Sanders2015-11-161-14/+14
| | | | | | NFC at the moment, but it will prevent a test failure once IAS is enabled. llvm-svn: 253209
* [mips][ias] Allow whitespace after commas in inlineasm*.ll tests.Daniel Sanders2015-11-164-59/+59
| | | | | | | IAS always prints whitespace after a comma. NFC at the moment but this will prevent failures when IAS is enabled. llvm-svn: 253208
* Handle ARMv6KZ namingArtyom Skrobov2015-11-162-5/+8
| | | | | | | | | | | | Summary: Update for clang tests for D14568 Reviewers: rengolin, joerg, bogden Subscribers: aemerson, rengolin, cfe-commits Differential Revision: http://reviews.llvm.org/D14570 llvm-svn: 253207
* Handle ARMv6KZ namingArtyom Skrobov2015-11-169-58/+18
| | | | | | | | | | | | | | | | | | | | | | | Summary: * ARMv6KZ is the "canonical" name, given in the ARMARM * ARMv6Z is an "official abbreviation" for it, mentioned in the ARMARM * ARMv6ZK is a popular misspelling, which we should support as an alias. The patch corrects the handling of the names. Functional changes: * ARMv6Z no longer treated as an architecture in its own right * ARMv6ZK renamed to ARMv6KZ, accepting ARMv6ZK as an alias * arm1176jz-s and arm1176jzf-s recognized as ARMv6ZK, instead of ARMv6K * default ARMv6K CPU changed to arm1176j-s Reviewers: rengolin, logan, compnerd Subscribers: aemerson, llvm-commits, rengolin Differential Revision: http://reviews.llvm.org/D14568 llvm-svn: 253206
* [compiler-rt] [tsan] Enable intercept setjmp/longjmp for AArch64Adhemerval Zanella2015-11-169-11/+227
| | | | | | | | | | | | | | | This patch adds assembly routines to enable setjmp/longjmp for aarch64 on linux. It fixes: * test/tsan/longjmp2.cc * test/tsan/longjmp3.cc * test/tsan/longjmp4.cc * test/tsan/signal_longjmp.cc I also checked with perlbench from specpu2006 (it fails to run with missing setjmp/longjmp intrumentation). llvm-svn: 253205
* [asan] Restored asynch signal test.Yury Gribov2015-11-161-0/+104
| | | | llvm-svn: 253204
* [clang-tidy] Test commit (playing with git-svn)Alexander Kornienko2015-11-162-4/+3
| | | | llvm-svn: 253203
* clang-format: Enable #include sorting by default.Daniel Jasper2015-11-169-17/+46
| | | | | | | | | This has seen quite some usage and I am not aware of any issues. Also add a style option to enable/disable include sorting. The existing command line flag can from now on be used to override whatever is set in the style. llvm-svn: 253202
* NFC refactorings in lib/Support/TargetParser.cppArtyom Skrobov2015-11-161-16/+16
| | | | | | | | | | | | | | | | Summary: * declare FPUNames, ARCHNames, ARCHExtNames, HWDivNames, CPUNames as static const * implement getDefaultExtensions with a StringSwitch, in the same way getDefaultFPU is implemented Reviewers: rengolin Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14648 llvm-svn: 253201
* [OPENMP] Fixed tests for gcc build.Alexey Bataev2015-11-162-2/+3
| | | | llvm-svn: 253200
* [ARM] Pass in the architecture to TargetParser to cope with API changeBradley Smith2015-11-161-2/+3
| | | | | | | | The TargetParser API to get the default FPU and default extensions has changed so that it can fall back to the architecture in case of a generic CPU. llvm-svn: 253199
* [ARM] Allow TargetParser to accurately target architecturesBradley Smith2015-11-163-38/+48
| | | | | | | | | | | | Instead of defaulting to an empty string, we want to default to the CPU 'generic' in the case of no valid default CPU being found, (as long as the architecture is actually valid). In order to do this we add a default FPU for each architecture, as well as falling back to architecture defaults for extensions and FPU in the case of a generic CPU is specified. llvm-svn: 253198
* Revert "Add a "not_in()" function you can apply to the list type arguments ↵Pavel Labath2015-11-162-21/+4
| | | | | | | | to expectedFailureAll to reverse" This reverts commit r253106. llvm-svn: 253197
* [ARM] Introduce subtarget features per ARM architecture.Bradley Smith2015-11-166-362/+412
| | | | | | | This allows for accurate architecture targeting as well as removing duplicate information (hardcoded feature strings) from MCTargetDesc. llvm-svn: 253196
* Properly check if a CMPZ node is in fact comparing against zeroJames Molloy2015-11-162-0/+17
| | | | | | | | This was left implicit and never ever checked, which means we could have a CMPZ against some non-zero value and we were carrying on with BFI conversion regardless. Caught by Oliver Stannard using csmith; regression test added. llvm-svn: 253195
* Don't generate discriminators for calls to debug intrinsicsPavel Labath2015-11-162-17/+49
| | | | | | | | | | | | | | Summary: This fails a check in Verifier.cpp, which checks for location matches between the declared variable and the !dbg attachments. Reviewers: dnovillo, dblaikie, danielcdh Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14657 llvm-svn: 253194
* [AArch64] ldr= pseudo-instruction silently ignored if register invalidOliver Stannard2015-11-162-1/+19
| | | | | | | | | | | | | The AArch64 assembler was silently ignoring instructions like this: ldr foo, =bar AArch64AsmParser::parseOperand was returning true as the parse failed, but was not calling AArch64AsmParser::Error to report this to the user, so the instruction was ignored without printing an error message. Differential Revision: http://reviews.llvm.org/D14651 llvm-svn: 253193
* [GlobalOpt] Address post-commit review comments on r253168James Molloy2015-11-161-3/+17
| | | | | | | | Address Duncan Exon Smith's comments on D14148, which was added after the patch had been LGTM'd and committed: * clang-format one area where whitespace diffs occurred. * Add a threshold to limit the store/load dominance checks as they are quadratic. llvm-svn: 253192
* Update for the gnu flavor being renamed to old-gnu.Rafael Espindola2015-11-164-10/+10
| | | | llvm-svn: 253191
* [CGDebugInfo] Set the size and align for reference typesKeno Fischer2015-11-162-7/+8
| | | | | | | | | | In r253186, I changed the DIBuilder API to now take size and align for reference types as well. This was done in preparation for upcoming changes to the Verifier that will validate that sizes match between DI types and IR values that are declared as having those types. This updates clang to actually pass the information through. llvm-svn: 253190
* Move helper classes into anonymous namespaces. NFC.Benjamin Kramer2015-11-162-0/+6
| | | | llvm-svn: 253189
* Rename the gnu flavour to gnu old.Rafael Espindola2015-11-16462-696/+696
| | | | | | This is the first step in making ELF2 the default. llvm-svn: 253188
* Fix r253186 test caseKeno Fischer2015-11-161-1/+2
| | | | | | | Referencing a DILocation whose scope is a different subprogram causes an assertion failure. llvm-svn: 253187
* [DIBuilder] Make createReferenceType take size and alignKeno Fischer2015-11-164-4/+56
| | | | | | | | | | | | | | | | | | Summary: Since we're passing references to dbg.value as pointers, we need to have the frontend properly declare their sizes and alignments (as it already does for regular pointers) in preparation for my upcoming patch to have the verifer check that the sizes agree. Also augment the backend logic that skips actually emitting this information into DWARF such that it also handles reference types. Reviewers: aprantl, dexonsmith, dblaikie Subscribers: dblaikie, llvm-commits Differential Revision: http://reviews.llvm.org/D14275 llvm-svn: 253186
* AVX512: Implemented encoding and intrinsics for VMOVSHDUP/VMOVSLDUP ↵Igor Breger2015-11-1610-107/+528
| | | | | | | | instructions. Differential Revision: http://reviews.llvm.org/D14322 llvm-svn: 253185
* [Sema] Implement several unary type traits more accuratelyDavid Majnemer2015-11-164-32/+62
| | | | | | | | | | | | | | is_empty, is_polymorphic, and is_abstract didn't handle incomplete types correctly. Only non-union class types must be complete for these traits. is_final and is_sealed don't care about the particular spelling of the FinalAttr. is_interface_class should always return false regardless of its input. The type trait can only be satisfied in a mode we do not support (/CLR). llvm-svn: 253184
* Also map the personality function in CloneFunctionIntoKeno Fischer2015-11-162-0/+15
| | | | | | | | | | | | | | | | Summary: The Old personality function gets copied over, but the Materializer didn't have a chance to inspect it (e.g. to fix up references to the correct module for the target function). Also add a verifier check that makes sure the personality routine is in the same module as the function whose personality it is. Reviewers: majnemer Subscribers: jevinskie, llvm-commits Differential Revision: http://reviews.llvm.org/D14474 llvm-svn: 253183
* [Sink] Don't move landingpadsKeno Fischer2015-11-162-1/+34
| | | | | | | | | | | | | | | Summary: Moving landingpads into successor basic blocks makes the verifier sad. Teach Sink that much like PHI nodes and terminator instructions, landingpads (and cleanuppads, etc.) may not be moved between basic blocks. Reviewers: majnemer Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14475 llvm-svn: 253182
* [Basic] Replace vector<bool> with BitVector in SourceManager. NFC.Vedant Kumar2015-11-161-1/+2
| | | | llvm-svn: 253181
* [ADT] Make capacity_in_bytes support BitVector. NFC.Vedant Kumar2015-11-161-1/+9
| | | | | | | This makes it a bit easier to replace instances of vector<bool> with BitVector. llvm-svn: 253180
* [Frontend] Rangify for loop. NFC.Vedant Kumar2015-11-161-2/+2
| | | | llvm-svn: 253178
* [Basic] Use a bitfield in SLocEntry for clarity. NFC.Vedant Kumar2015-11-161-5/+10
| | | | llvm-svn: 253177
* [analyzer] Handle calling ObjC super method from inside C++ lambda.Devin Coughlin2015-11-152-0/+63
| | | | | | | | | | When calling a ObjC method on super from inside a C++ lambda, look at the captures to find "self". This mirrors how the analyzer handles calling super in an ObjC block and fixes an assertion failure. rdar://problem/23550077 llvm-svn: 253176
* [Sema] Use getLangOpts in Sema instead of Preprocessor. Call getTargetInfo ↵Craig Topper2015-11-152-10/+9
| | | | | | on the AST context instead of Preprocessor. NFC llvm-svn: 253175
* [Sema] Fix filename in header. NFCCraig Topper2015-11-151-1/+1
| | | | llvm-svn: 253174
* [Sema] Remove unnecessary includes and forward declarations. NFCCraig Topper2015-11-152-5/+0
| | | | llvm-svn: 253173
* [WebAssembly] Use tabs instead of spaces in assembly output.Dan Gohman2015-11-158-85/+85
| | | | | | This seems to be the most popular convention among the other backends. llvm-svn: 253172
* [X86][SSE] Tidyup with implicit SDValue bool check. NFC.Simon Pilgrim2015-11-151-8/+5
| | | | llvm-svn: 253171
* Fix mapping of unmaterialized global values during metadata linkingTeresa Johnson2015-11-153-7/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The patch to move metadata linking after global value linking didn't correctly map unmaterialized global values to null as desired. They were in fact mapped to the source copy. It largely worked by accident since most module linker clients destroyed the source module which caused the source GVs to be replaced by null, but caused a failure with LTO linking on Windows: http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20151109/312869.html The problem is that a null return value from materializeValueFor is handled by mapping the value to self. This is the desired behavior when materializeValueFor is passed a non-GlobalValue. The problem is how to distinguish that case from the case where we really do want to map to null. This patch addresses this by passing in a new flag to the value mapper indicating that unmapped global values should be mapped to null. Other Value types are handled as before. Note that the documented behavior of asserting on unmapped values when the flag RF_IgnoreMissingValues isn't set is currently disabled with FIXME notes due to bootstrap failures. I modified these disabled asserts so when they are eventually enabled again it won't assert for the unmapped values when the new RF_NullMapMissingGlobalValues flag is set. I also considered using a callback into the value materializer, but a flag seemed cleaner given that there are already existing flags. I also considered modifying materializeValueFor to return the input value when we want to map to source and then treat a null return to mean map to null. However, there are other value materializer subclasses that implement materializeValueFor, and they would all need to be audited and the return values possibly changed, which seemed error-prone. Reviewers: dexonsmith, joker.eph Subscribers: pcc, llvm-commits Differential Revision: http://reviews.llvm.org/D14682 llvm-svn: 253170
* [X86][MMX] Added MMX IR + assembly codegen builtin tests for some missing ↵Simon Pilgrim2015-11-151-14/+81
| | | | | | cvt intrinsics llvm-svn: 253169
* [GlobalOpt] Demote globals to locals more aggressivelyJames Molloy2015-11-154-9/+158
| | | | | | | | | | | | | | | | Global to local demotion can speed up programs that use globals a lot. It is particularly useful with LTO, when the entire call graph is known and most functions have been internalized. For a global to be demoted, it must only be accessed by one function and that function: 1. Must never recurse directly or indirectly, else the GV would be clobbered. 2. Must never rely on the value in GV at the start of the function (apart from the initializer). GlobalOpt can already do this, but it is hamstrung and only ever tries to demote globals inside "main", because C++ gives extra guarantees about how main is called - once and only once. In LTO mode, we can often prove the first property (if the function is internal by this point, we know enough about the callgraph to determine if it could possibly recurse). FunctionAttrs now infers the "norecurse" attribute for this reason. The second property can be proven for a subset of functions by proving that all loads from GV are dominated by a store to GV. This is conservative in the name of compile time - this only requires a DominatorTree which is fairly cheap in the grand scheme of things. We could do more fancy stuff with MemoryDependenceAnalysis too to catch more cases but this appears to catch most of the useful ones in my testing. llvm-svn: 253168
* [Docs] Fix typoAlex Denisov2015-11-152-2/+2
| | | | llvm-svn: 253167
* [libclang] Visit TypeAliasTemplateDeclSergey Kalinichev2015-11-158-3/+24
| | | | | | | | This makes TypeAliasTemplateDecl accessible via LibClang and python bindings Differential Revision: http://reviews.llvm.org/D13844 llvm-svn: 253166
* [libclang] Expose AutoTypeSergey Kalinichev2015-11-154-6/+10
| | | | | | | | Expose the AutoType via LibClang and python bindings Differential Revision: http://reviews.llvm.org/D13000 llvm-svn: 253165
* Remove some trailing whitespaceSergey Kalinichev2015-11-151-10/+10
| | | | llvm-svn: 253164
* Revert r253160.Igor Breger2015-11-1510-528/+107
| | | | | | It broke layering violation. Reproducible with BUILD_SHARED_LIBS=ON. llvm-svn: 253163
* Fixed GEP visitor in the InstCombine pass.Elena Demikhovsky2015-11-152-5/+33
| | | | | | | | | | | | | The current implementation of GEP visitor in InstCombine fails with assertion on Vector GEP with mix of scalar and vector types, like this: getelementptr double, double* %a, <8 x i32> %i (It fails to create a "sext" from <8 x i32> to <8 x i64>) I fixed it and added some tests. Differential Revision: http://reviews.llvm.org/D14485 llvm-svn: 253162
* Make the mingw toolchain accept 'ld' and 'lld' only as values to -fuse-ld.Yaron Keren2015-11-152-4/+2
| | | | | | Post-commit suggestion by Filipe Cabecinhas. llvm-svn: 253161
OpenPOWER on IntegriCloud