summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Create a default rune table for libc++. Initial setting - never enabled. The ↵Marshall Clow2015-03-041-0/+82
| | | | | | expectation is that some targets (Android, cough) will enable it. Note that this is an implementation detail, not an interface change. llvm-svn: 231252
* [Modules] Fix crash in Preprocessor::getLastMacroWithSpelling().Argyrios Kyrtzidis2015-03-043-3/+20
| | | | | | Macro names that got undefined inside a module may not have their MacroInfo set. llvm-svn: 231251
* Mutate TargetLowering::shouldExpandAtomicRMWInIR to specifically dictate how ↵JF Bastien2015-03-048-26/+66
| | | | | | | | | | | | | | | | | | | | | AtomicRMWInsts are expanded. Summary: In PNaCl, most atomic instructions have their own @llvm.nacl.atomic.* function, each one, with a few exceptions, represents a consistent behaviour across all NaCl-supported targets. Unfortunately, the atomic RMW operations nand, [u]min, and [u]max aren't directly represented by any such @llvm.nacl.atomic.* function. This patch refines shouldExpandAtomicRMWInIR in TargetLowering so that a future `Le32TargetLowering` class can selectively inform the caller how the target desires the atomic RMW instruction to be expanded (ie via load-linked/store-conditional for ARM/AArch64, via cmpxchg for X86/others?, or not at all for Mips) if at all. This does not represent a behavioural change and as such no tests were added. Patch by: Richard Diamond. Reviewers: jfb Reviewed By: jfb Subscribers: jfb, aemerson, t.p.northover, llvm-commits Differential Revision: http://reviews.llvm.org/D7713 llvm-svn: 231250
* [mips][microMIPS] Make usage of ADDU16 and SUBU16 by code generatorJozef Kolek2015-03-044-3/+42
| | | | | | Differential Revision: http://reviews.llvm.org/D7609 llvm-svn: 231249
* Revert "[IAS] Teach -cc1as about the 'target-abi' option."Daniel Jasper2015-03-042-7/+2
| | | | | | | | | This reverts commit 0e41c8faeff75614cf4627533331d780ba3db030. This is breaking buildbots: http://lab.llvm.org:8080/green/job/clang-stage1-configure-RA_check/4668/ llvm-svn: 231248
* Prevent test from writing files.Daniel Jasper2015-03-041-4/+4
| | | | llvm-svn: 231247
* [PowerPC] Remove unnecessary and incomplete commentaryBill Schmidt2015-03-041-412/+0
| | | | | | | | | | This "itinerary class map" in PPCSchedule.td is incomplete and redundant with the actual code. As it provides no value, we've decided to remove it. No functional change. llvm-svn: 231246
* Adjust the changes from r230255 to bail out if the backend can't lowerJoerg Sonnenberger2015-03-044-26/+27
| | | | | | | __builtin_setjmp/__builtin_longjmp and don't fall back to the libc functions. llvm-svn: 231245
* [IAS] Teach -cc1as about the 'target-abi' option.Toma Tabacu2015-03-042-2/+7
| | | | | | | | | | | | | | | | | Summary: When using the IAS from clang, the 'target-abi' option gets passed to cc1as, but cc1as doesn't know about it and gives an "unknown argument" error. This is fixed by adding the 'CC1AsOption' flag to the 'target-abi' option in CC1Options.td. Reviewers: atanasyan, echristo, dsanders Reviewed By: dsanders Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D7903 llvm-svn: 231244
* [X86][FastISel] Simplify the logic in method X86SelectSIToFP.Andrea Di Biagio2015-03-042-23/+15
| | | | | | | | | | | | | | | | The target-independent selection algorithm in FastISel already knows how to select a SINT_TO_FP if the target is SSE but not AVX. On targets that have SSE but not AVX, the tablegen'd 'fastEmit' functions for ISD::SINT_TO_FP know how to select instruction X86::CVTSI2SSrr (for an i32 to f32 conversion) and X86::CVTSI2SDrr (for an i32 to f64 conversion). This patch simplifies the logic in method X86SelectSIToFP knowing that the code would not be reachable if the subtarget doesn't have AVX. No functional change intended. llvm-svn: 231243
* Move one more diagnostic into the new -Wformat-pedantic group.Daniel Jasper2015-03-042-8/+20
| | | | | | This was apparently overlooked in r231211. llvm-svn: 231242
* asan: do not instrument direct inbounds accesses to stack variablesDmitry Vyukov2015-03-042-263/+333
| | | | | | | | | | | | | | | Do not instrument direct accesses to stack variables that can be proven to be inbounds, e.g. accesses to fields of structs on stack. But it eliminates 33% of instrumentation on webrtc/modules_unittests (number of memory accesses goes down from 290152 to 193998) and reduces binary size by 15% (from 74M to 64M) and improved compilation time by 6-12%. The optimization is guarded by asan-opt-stack flag that is off by default. http://reviews.llvm.org/D7583 llvm-svn: 231241
* [mips] Rename the LA/LI/DLI TableGen definitions and classes. NFC.Toma Tabacu2015-03-043-16/+17
| | | | | | | | | | | | | | | | Summary: Use more reasonable names for these pseudo-instructions. As there's only one definition tied to any one of these classes, I named them with abbreviated versions of their respective class' name. Reviewers: dsanders Reviewed By: dsanders Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D7831 llvm-svn: 231240
* [mips] Keep the parameter list of Filler::searchRange() consistent. NFC.Vasileios Kalintiris2015-03-041-9/+9
| | | | | | | | | | | | | | Summary: Move the "Filler" parameter to the end of the parameter list as it is, conceptually, the only output parameter of that function. Reviewers: dsanders Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D7726 llvm-svn: 231239
* [MBP] Fix a really horrible bug in MachineBlockPlacement, but behindChandler Carruth2015-03-042-9/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a flag for now. First off, thanks to Daniel Jasper for really pointing out the issue here. It's been here forever (at least, I think it was there when I first wrote this code) without getting really noticed or fixed. The key problem is what happens when two reasonably common patterns happen at the same time: we outline multiple cold regions of code, and those regions in turn have diamonds or other CFGs for which we can't just topologically lay them out. Consider some C code that looks like: if (a1()) { if (b1()) c1(); else d1(); f1(); } if (a2()) { if (b2()) c2(); else d2(); f2(); } done(); Now consider the case where a1() and a2() are unlikely to be true. In that case, we might lay out the first part of the function like: a1, a2, done; And then we will be out of successors in which to build the chain. We go to find the best block to continue the chain with, which is perfectly reasonable here, and find "b1" let's say. Laying out successors gets us to: a1, a2, done; b1, c1; At this point, we will refuse to lay out the successor to c1 (f1) because there are still un-placed predecessors of f1 and we want to try to preserve the CFG structure. So we go get the next best block, d1. ... wait for it ... Except that the next best block *isn't* d1. It is b2! d1 is waaay down inside these conditionals. It is much less important than b2. Except that this is exactly what we didn't want. If we keep going we get the entire set of the rest of the CFG *interleaved*!!! a1, a2, done; b1, c1; b2, c2; d1, f1; d2, f2; So we clearly need a better strategy here. =] My current favorite strategy is to actually try to place the block whose predecessor is closest. This very simply ensures that we unwind these kinds of CFGs the way that is natural and fitting, and should minimize the number of cache lines instructions are spread across. It also happens to be *dead simple*. It's like the datastructure was specifically set up for this use case or something. We only push blocks onto the work list when the last predecessor for them is placed into the chain. So the back of the worklist *is* the nearest next block. Unfortunately, a change like this is going to cause *soooo* many benchmarks to swing wildly. So for now I'm adding this under a flag so that we and others can validate that this is fixing the problems described, that it seems possible to enable, and hopefully that it fixes more of our problems long term. llvm-svn: 231238
* [mips] Specify the correct value type when combining a CMovFP node.Vasileios Kalintiris2015-03-041-4/+2
| | | | | | | | | This commit fixes a bug introduced in r230956 where we were creating CMovFP_{T,F} nodes with multiple return value types (one for each operand). With this change the return value type of the new node is the same as the value type of the True/False operands of the original node. llvm-svn: 231237
* [clang-tidy] Output more diagnostics in check_clang_tidy.shAlexander Kornienko2015-03-041-0/+9
| | | | | | Print clang-tidy output and fixes applied. llvm-svn: 231236
* Fix build on OS X after r231202Ilia K2015-03-042-0/+2
| | | | llvm-svn: 231235
* Set the signals based on the OS in the qHostInfo packetTamas Berghammer2015-03-041-1/+1
| | | | | | | | | | Setting it from the Target architecture cause problems when the target archiutecture is filled just by examining the executable because in that case the OS isn't set. Differential revision: http://reviews.llvm.org/D8035 llvm-svn: 231234
* Added long 'print-values' option for var-update MI command.Ilia K2015-03-043-13/+45
| | | | | | | | | | | | | | | | | | | Summary: The -var-update MI command should take the same print-values options as var-list children, however currently only the integer versions are supported. Added --no-values, --all-values, and --simple-values long options. See: https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Variable-Objects.html#GDB_002fMI-Variable-Objects Patch from ewan@codeplay.com Reviewers: EwanCrawford Subscribers: ki.stfu, lldb-commits Differential Revision: http://reviews.llvm.org/D8008 llvm-svn: 231233
* Fix expectation for TestPlatformCommand.test_shellTamas Berghammer2015-03-042-2/+5
| | | | | | | | | * Create expectation based on target platform * Add custom expectation for remote android target Differential revision: http://reviews.llvm.org/D8031 llvm-svn: 231232
* Fix deadlock in operation thread in NativeProcessLinuxTamas Berghammer2015-03-041-9/+13
| | | | | | | | | The deadlock occurred when the Attach or the Launch operation failed for any reason. Differential revision: http://reviews.llvm.org/D8030 llvm-svn: 231231
* Add a flag to experiment with outlining optional branches.Daniel Jasper2015-03-042-2/+96
| | | | | | | | | | | | | In a CFG with the edges A->B->C and A->C, B is an optional branch. LLVM's default behavior is to lay the blocks out naturally, i.e. A, B, C, in order to improve code locality and fallthroughs. However, if a function contains many of those optional branches only a few of which are taken, this leads to a lot of unnecessary icache misses. Moving B out of line can work around this. Review: http://reviews.llvm.org/D7719 llvm-svn: 231230
* Use the unified section list when generating a symbol tablePavel Labath2015-03-041-1/+1
| | | | | | | | | | | | | | | | | | | | | Summary: Symbol table generation code was failing to take into account the debug symbols because the object file was looking only into its own section list when doing the generation, even though the debug symbols from another object file were correctly detected and loaded by the SymbolVendor. This changes the code to use the unified section list, which fixes this problem. Test Plan: I do not intend do submit this yet since it causes (or more like, exposes) the issue in D7884, but I wanted to put this out here, so that anyone who wants to take a look at it can do so. (And I also wanted to know if this is the right approach to the problem :). Reviewers: clayborg, zturner Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D7913 llvm-svn: 231229
* Correctly resolve symbol names containing linker annotationsPavel Labath2015-03-046-13/+89
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Symbols in ELF files can be versioned, but LLDB currently does not understand these. This problem becomes apparent once one loads glibc with debug info. Here (in the .symtab section) the versions are embedded in the name (name@VERSION), which causes issues when evaluating expressions referencing memcpy for example (current glibc contains memcpy@@GLIBC_2.14 and memcpy@GLIBC_2.2.5). This problem was not evident without debug symbols as the .dynsym section stores the bare names and the actual versions are present in a separate section (.gnu.version_d), which LLDB ignores. This resulted in two definitions of memcpy in the symbol table. This patch adds support for storing annotated names to the Symbol class. If Symbol.m_contains_linker_annotations is true then this symbol is annotated. Unannotated name can be obtained by calling StripLinkerAnnotations on the corresponding ObjectFile. ObjectFileELF implements this to strip @VERSION suffixes when requested. Symtab uses this function to add the bare name as well as the annotated name to the name lookup table. To preserve the size of the Symbol class, I had to steal one bit from the m_type field. Test Plan: This fixes TestExprHelpExamples.py when run with a glibc with debug symbols. Writing an environment agnostic test case would require building a custom shared library with symbol versions and testing symbol resolution against that, which is somewhat challenging. Reviewers: clayborg, jingham Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D8036 llvm-svn: 231228
* Fix PR22408 - LLVM producing AArch64 TLS relocations that GNU linkers cannot ↵Kristof Beyls2015-03-049-192/+257
| | | | | | | | | | | | | | | | | | | | | | | | | | | handle yet. As is described at http://llvm.org/bugs/show_bug.cgi?id=22408, the GNU linkers ld.bfd and ld.gold currently only support a subset of the whole range of AArch64 ELF TLS relocations. Furthermore, they assume that some of the code sequences to access thread-local variables are produced in a very specific sequence. When the sequence is not as the linker expects, it can silently mis-relaxe/mis-optimize the instructions. Even if that wouldn't be the case, it's good to produce the exact sequence, as that ensures that linkers can perform optimizing relaxations. This patch: * implements support for 16MiB TLS area size instead of 4GiB TLS area size. Ideally clang would grow an -mtls-size option to allow support for both, but that's not part of this patch. * by default doesn't produce local dynamic access patterns, as even modern ld.bfd and ld.gold linkers do not support the associated relocations. An option (-aarch64-elf-ldtls-generation) is added to enable generation of local dynamic code sequence, but is off by default. * makes sure that the exact expected code sequence for local dynamic and general dynamic accesses is produced, by making use of a new pseudo instruction. The patch also removes two (AArch64ISD::TLSDESC_BLR, AArch64ISD::TLSDESC_CALL) pre-existing AArch64-specific pseudo SDNode instructions that are superseded by the new one (TLSDESC_CALLSEQ). llvm-svn: 231227
* [Tablegen] Use correct result number variables with the pattern nodes they ↵Craig Topper2015-03-041-2/+2
| | | | | | go with when handling SDTCisSameAs. No functional change as they are always both 0 unless you try to define a multi result type profile that uses SDTCisSame on one of the other results. llvm-svn: 231226
* Explicitly default DenseMapTest::CtorTest::operator=David Blaikie2015-03-041-0/+1
| | | | | | | Using the implicit default copy assignment operator in the presence of a user-declared copy ctor is deprecated in C++11. llvm-svn: 231225
* Remove explicit RNSuccIterator copy assignment in favor of implicit defaultDavid Blaikie2015-03-041-20/+0
| | | | | | | | Asserting that the source and destination iterators are from the same region is unnecessary - there's no reason to disallow reassignment from any regions, so long as they aren't compared. llvm-svn: 231224
* use = default instead of {}David Blaikie2015-03-041-2/+2
| | | | llvm-svn: 231223
* Make format_object_base explicitly copyable, so format_objects can be copied ↵David Blaikie2015-03-041-0/+1
| | | | | | | | | without relying on the implicit copy ctor Use of the implicit copy ctor is deprecated in C++11 in the presence of a user declared dtor. llvm-svn: 231222
* Devirtualize ~parser<T> by making it protected in base classes and making ↵David Blaikie2015-03-041-10/+15
| | | | | | | | | derived classes final These objects are never owned/destroyed polymorphically, so there's no need for a virtual dtor. llvm-svn: 231221
* Avoid copying parser objectsDavid Blaikie2015-03-041-2/+2
| | | | | | | Use of their copy members is deprecated since they have a user-declared dtor. llvm-svn: 231220
* [DAGCombine] Fix a bug in a BUILD_VECTOR combineMichael Kuperstein2015-03-042-2/+23
| | | | | | | | | | When trying to convert a BUILD_VECTOR into a shuffle, we try to split a single source vector that is twice as wide as the destination vector. We can not do this when we also need the zero vector to create a blend. This fixes PR22774. Differential Revision: http://reviews.llvm.org/D8040 llvm-svn: 231219
* Make OptionValue explicitly copyableDavid Blaikie2015-03-041-0/+8
| | | | | | | | | Since OptionValue (& its base classes) have user-declared dtors, use of the implicit copy ctor/assignment operator is deprecated in C++11. Provide them explicitly (defaulted) to avoid depending on this deprecated feature. llvm-svn: 231218
* Devirtualize OptionValue::~OptionValue in favor of protected in the base, ↵David Blaikie2015-03-041-5/+19
| | | | | | | | | | with final derived classes These objects are never polymorphically owned, so there's no need for virtual dtors - just make the dtor protected in the base classes, and make the derived classes final. llvm-svn: 231217
* [MC][Target] Implement support for R_X86_64_SIZE{32,64}.Davide Italiano2015-03-044-0/+22
| | | | | | | Differential Revision: D7990 Reviewed by: rafael, majnemer llvm-svn: 231216
* [llvm-pdbdump] Display full enum definitions.Zachary Turner2015-03-0415-63/+188
| | | | | | | | | | | This will now display enum definitions both at the global scope as well as nested inside of classes. Additionally, it will no longer display enums at the global scope if the enum is nested. Instead, it will omit the definition of the enum globally and instead emit it in the corresponding class definition. llvm-svn: 231215
* Revert "[ADT] fail-fast iterators for DenseMap"Chaoren Lin2015-03-042-138/+20
| | | | | | | | | | | | This reverts commit 4b7263d855006988854036b4a4891fcf19aebe65. r231125 http://reviews.llvm.org/D7931 This was causing many LLDB tests to fail on OS X, Linux, and FreeBSD. https://bpaste.net/show/6a23e1f53623 llvm-svn: 231214
* AT.isValid() should come before AT.matchesType()Seth Cantrell2015-03-041-30/+36
| | | | llvm-svn: 231213
* Make File non-const in the resolver.Rui Ueyama2015-03-047-27/+27
| | | | | | | | | | | | | | | File objects are not really const in the resolver. We set ordinals to them and call beforeLink hooks. Also, File's member functions marked as const are not really const. ArchiveFile never returns the same member file twice, so it remembers files returned before. find() has side effects. In order to deal with the inconsistencies, we sprinkled const_casts and marked member varaibles as mutable. This patch removes const from there to reflect the reality. llvm-svn: 231212
* Add a format warning for "%p" with non-void* argsSeth Cantrell2015-03-046-69/+98
| | | | | | | | | | | | | | | | | | GCC -pedantic produces a format warning when the "%p" specifier is used with arguments that are not void*. It's useful for portability to be able to catch such warnings with clang as well. The warning is off by default in both gcc and with this patch. This patch enables it either when extensions are disabled with -pedantic, or with the specific flag -Wformat-pedantic. The C99 and C11 specs do appear to require arguments corresponding to 'p' specifiers to be void*: "If any argument is not the correct type for the corresponding conversion specification, the behavior is undefined." [7.19.6.1 p9], and of the 'p' format specifier "The argument shall be a pointer to void." [7.19.6.1 p8] Both printf and scanf format checking are covered. llvm-svn: 231211
* Move emitDIE and emitAbbrevs to AsmPrinter. NFC.Frederic Riss2015-03-046-68/+74
| | | | | | | | | | | | | | (They are called emitDwarfDIE and emitDwarfAbbrevs in their new home) llvm-dsymutil wants to reuse that code, but it doesn't have a DwarfUnit or a DwarfDebug object to call those. It has access to an AsmPrinter though. Having emitDIE in the AsmPrinter also removes the DwarfFile dependency on DwarfDebug, and thus the patch drops that field. Differential Revision: http://reviews.llvm.org/D8024 llvm-svn: 231210
* Constify AsmPrinter passed to DIE methods.Frederic Riss2015-03-042-48/+48
| | | | llvm-svn: 231209
* Revert "temporary"Rui Ueyama2015-03-041-22/+8
| | | | | | This reverts accidental commit r231205. llvm-svn: 231208
* Fix the test for r231201. We don't crash anymore.Filipe Cabecinhas2015-03-041-1/+1
| | | | llvm-svn: 231207
* Simplify FileArchive. NFC.Rui Ueyama2015-03-041-23/+15
| | | | | | | This patch moves local variable definitions so that their scope get narrower. Also uses range-based loop. Both are for readability. llvm-svn: 231206
* temporaryRui Ueyama2015-03-041-8/+22
| | | | llvm-svn: 231205
* Workaround MSVC not providing implicit move membersDavid Blaikie2015-03-041-0/+8
| | | | llvm-svn: 231204
* Object: Add range iterators to Archive symbolsRui Ueyama2015-03-041-3/+5
| | | | | | Also define operator* for symbol iterator just like Archive children iterator. llvm-svn: 231203
OpenPOWER on IntegriCloud