summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [ExecutionEngine] Remove cruft and fix a couple of warnings in the test case forLang Hames2015-07-111-3/+2
| | | | | | r241962. llvm-svn: 241973
* Renamed some uses of unroll to interleave in the vectorizer.Tyler Nowicki2015-07-112-93/+100
| | | | llvm-svn: 241971
* MC: Shrink MCDwarfLoc/MCLineEntryDuncan P. N. Exon Smith2015-07-101-9/+18
| | | | | | | | | | | | Drop 8 bytes off of `MCDwarfLoc` by restricting the `Isa`, `Column`, and `Flags` members to appropriate sizes (from `DWARFDebugLine::Row`). Saves a little over 0.5% off the heap of llc with no real functionality change. (I'm looking at `llc` memory usage on `verify-uselistorder.lto.opt.bc`; see r236629 for details.) llvm-svn: 241970
* Clean up the comments in DIBuilder.h to adhere to the coding standardsAdrian Prantl2015-07-101-315/+318
| | | | | | a little more. llvm-svn: 241969
* Revert "Clean up the comments in DIBuilder.h to adhere to the coding standards"Adrian Prantl2015-07-101-325/+315
| | | | | | This reverts commit 241965. (I accidentally committed too much). llvm-svn: 241968
* [libcxx] LWG2420 bits for bind<void> - Patch from K-BalloEric Fiselier2015-07-103-9/+26
| | | | | | | Implemented LWG2420 bits for bind<void> Review: http://reviews.llvm.org/D10997 llvm-svn: 241967
* Cleanup a couple of comments in DIBuilder.cppAdrian Prantl2015-07-101-3/+3
| | | | llvm-svn: 241966
* Clean up the comments in DIBuilder.h to adhere to the coding standardsAdrian Prantl2015-07-101-315/+325
| | | | | | a little more. llvm-svn: 241965
* Add a another packet to the gdb-remote protocol,Jason Molenda2015-07-1014-0/+698
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | jGetLoadedDynamicLibrariesInfos. This packet is similar to qXfer:libraries:read except that lldb supplies the number of solibs that should be reported about, and the start address for the list of them. At the initial process launch we'll read the full list of solibs linked by the process -- at this point we could be using qXfer:libraries:read -- but on subsequence solib-loaded notifications, we'll be fetching a smaller number of solibs, often only one or two. A typical Mac/iOS GUI app may have a couple hundred different solibs loaded - doing all of the loads via memory reads takes a couple of megabytes of traffic between lldb and debugserver. Having debugserver summarize the load addresses of all the solibs and sending it in JSON requires a couple of hundred kilobytes of traffic. It's a significant performance improvement when communicating over a slower channel. This patch leaves all of the logic for loading the libraries in DynamicLoaderMacOSXDYLD -- it only call over ot ProcesGDBRemote to get the JSON result. If the jGetLoadedDynamicLibrariesInfos packet is not implemented, the normal technique of using memory read packets to get all of the details from the target will be used. <rdar://problem/21007465> llvm-svn: 241964
* Sema: Allow null names to be passed in to isAcceptableTagRedeclarationJustin Bogner2015-07-105-12/+12
| | | | | | | | | | | | | It's possible for TagRedeclarations to involve decls without a name, ie, anonymous enums. We hit some undefined behaviour if we bind these null names to the reference here. We never dereference the name, so it's harmless if it's null - make it a pointer to allow that. Fixes the Modules/submodules-merge-defs.cpp test under ubsan. llvm-svn: 241963
* [ExecutionEngine] Use std::function rather than a function pointer for theLang Hames2015-07-102-3/+71
| | | | | | | | LazyFunctionCreator. Patch by Pierre-Andre Saulais. Thanks Pierre! llvm-svn: 241962
* MC: Only allow changing feature bits in MCSubtargetInfoDuncan P. N. Exon Smith2015-07-103-8/+25
| | | | | | | | | | | | | | | | | Disallow all mutation of `MCSubtargetInfo` expect the feature bits. Besides deleting the assignment operators -- which were dead "code" -- this restricts `InitMCProcessorInfo()` to subclass initialization sequences, and exposes a new more limited function called `setDefaultFeatures()` for use by the ARMAsmParser `.cpu` directive. There's a small functional change here: ARMAsmParser used to adjust `MCSubtargetInfo::CPUSchedModel` as a side effect of calling `InitMCProcessorInfo()`, but I've removed that suspicious behaviour. Since the AsmParser shouldn't be doing any scheduling, there shouldn't be any observable change... llvm-svn: 241961
* AMDGPU: Fix chains for memory ops dependent on argument loadsMatt Arsenault2015-07-101-4/+19
| | | | | | | | | | | | | | | Most loads and stores are derived from pointers derived from a kernel argument load inserted during argument lowering. This was just using the EntryToken chain for the argument loads, and any users of these loads were also on the EntryToken chain. Return the chain of the lowered argument load so that dependent loads end up on the correct chain. No test since I'm not aware of any case where this actually broke. llvm-svn: 241960
* MIR Serialization: Serialize the virtual register operands.Alex Lorenz2015-07-108-17/+149
| | | | | | | | Reviewers: Duncan P. N. Exon Smith Differential Revision: http://reviews.llvm.org/D11005 llvm-svn: 241959
* [IR] Switch static const to an enum to silence MSVC linker warningsDavid Majnemer2015-07-102-4/+2
| | | | | | | Integral class statics are handled oddly in MSVC, we don't need them in this case, use an enum instead. llvm-svn: 241958
* MC: Remove MCSubtargetInfo() default constructorDuncan P. N. Exon Smith2015-07-1018-73/+51
| | | | | | | | | | | | | | | | | | | | | Force all creators of `MCSubtargetInfo` to immediately initialize it, merging the default constructor and the initializer into an initializing constructor. Besides cleaning up the code a little, this makes it clear that the initializer is never called again later. Out-of-tree backends need a trivial change: instead of calling: auto *X = new MCSubtargetInfo(); InitXYZMCSubtargetInfo(X, ...); return X; they should call: return createXYZMCSubtargetInfoImpl(...); There's no real functionality change here. llvm-svn: 241957
* MC: Remove MCSubtargetInfo::InitCPUSched()Duncan P. N. Exon Smith2015-07-104-13/+1
| | | | | | | | | | | | Remove all calls to `MCSubtargetInfo::InitCPUSched()` and merge its body into the only relevant caller, `MCSubtargetInfo::InitMCProcessorInfo()`. We were only calling the former after explicitly calling the latter with the same CPU; it's confusing to have both methods exposed. Besides a minor (surely unmeasurable) speedup in ARM and X86 from avoiding running the logic twice, no functionality change. llvm-svn: 241956
* [InstCombine] Actually combine AA metadata when replacing one load with anotherBjorn Steinbrink2015-07-102-6/+2
| | | | | | Fixes PR24083 llvm-svn: 241955
* AMDGPU: Use requested chain when lowering argumentsMatt Arsenault2015-07-101-1/+1
| | | | | | | No test since I'm not aware of any case where this will end up being a different chain. llvm-svn: 241954
* [modules] When checking the include guard for a header, check whether it'sRichard Smith2015-07-108-8/+41
| | | | | | | | | | visible in the module we're considering entering. Previously we assumed that if we knew the include guard for a modular header, we'd already parsed it, but that need not be the case if a header is present in the current module and one of its dependencies; the result of getting this wrong was that the current module's submodule for the header would end up empty. llvm-svn: 241953
* Disable C++ EH by default for clang-cl and MSVC environmentsReid Kleckner2015-07-103-22/+31
| | | | | | | | | We don't need any more bug reports from users telling us that MSVC-style C++ exceptions are broken. Developers and adventurous users can still test the existing functionality by passing along -fexceptions to either clang or clang-cl. llvm-svn: 241952
* ARM: Use SpecificBumpPtrAllocator to fix leak introduced in r241920Matthias Braun2015-07-101-3/+3
| | | | llvm-svn: 241951
* [SEH] Push reloads of the SEH code past phi nodesReid Kleckner2015-07-102-6/+119
| | | | | | | | | | | This in turn would sometimes introduce new cleanupblocks that didn't previously exist. The uses were being introduced by SSA value demotion. We actually want to *promote* uses of EH pointers and selectors, so I added some spcecial casing to avoid demoting such instructions. This is getting overly complicated, but hopefully we'll come along and delete it in the new representation. llvm-svn: 241950
* Add <type_traits> for is_pod, fixing r241947Duncan P. N. Exon Smith2015-07-101-0/+1
| | | | llvm-svn: 241949
* DAGCombiner: Assume invariant load cannot alias a storeMatt Arsenault2015-07-102-0/+44
| | | | | | | | | | The motivation is to allow GatherAllAliases / FindBetterChain to not give up on dependent loads of a pointer from constant memory. This is important for AMDGPU, because most loads are pointers derived from a load of a kernel argument from constant memory. llvm-svn: 241948
* MC: Remove the copy of MCSchedModel in MCSubtargetInfoDuncan P. N. Exon Smith2015-07-105-30/+46
| | | | | | | | | | | `MCSchedModel` is large. Make `MCSchedModel::GetDefaultSchedModel()` return by-reference instead of by-value, so we can store a pointer in `MCSubtargetInfo::CPUSchedModel` instead of a copy. Note: since `MCSchedModel` is POD, this doesn't create a static constructor. llvm-svn: 241947
* [ShrinkWrap][PEI] Do not insert epilogue for unreachable blocks.Quentin Colombet2015-07-103-3/+86
| | | | | | | Although this is not incorrect to insert such code, it is useless and it hurts the binary size. llvm-svn: 241946
* [MC] Switch static const to an enum to silence MSVC linker warningsDavid Majnemer2015-07-102-5/+2
| | | | | | | Integral class statics are handled oddly in MSVC, we don't need them in this case, use an enum instead. llvm-svn: 241945
* [analyzer] When forced to fake a block type, do it correctly.Jordan Rose2015-07-102-3/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | BlockDecl has a poor AST representation because it doesn't carry its type with it. Instead, the containing BlockExpr has the full type. This almost never matters for the analyzer, but if the block decl contains static local variables we need to synthesize a region to put them in, and this region will necessarily not have the right type. Even /that/ doesn't matter, unless (1) the block calls the function or method containing the block, and (2) the value of the block expr is used in some interesting way. In this case, we actually end up needing the type of the block region, and it will be set to our synthesized type. It turns out we've been doing a terrible job faking that type -- it wasn't a block pointer type at all. This commit fixes that to at least guarantee a block pointer type, using the signature written by the user if there is one. This is not really a correct answer because the block region's type will /still/ be wrong, but further efforts to make this right in the analyzer would probably be silly. We should just change the AST. rdar://problem/21698099 llvm-svn: 241944
* Fix AArch64 prologue for empty frame with dynamic allocas.Evgeniy Stepanov2015-07-102-8/+54
| | | | | | | | Fixes PR23804: assertion failure in emitPrologue in the case of a function with an empty frame and a dynamic alloca that needs stack realignment. This is a typical case for AddressSanitizer. llvm-svn: 241943
* [TTI] BasicTTIImpl assumes no vector registersJingyue Wu2015-07-104-12/+9
| | | | | | | | | | | | | | | | | | | | | | | Summary: Following the discussion on r241884, it's more reasonable to assume that a target has no vector registers by default instead of letting every such target overrides getNumberOfRegisters. Therefore, this patch modifies BasicTTIImpl::getNumberOfRegisters to return 0 when Vector is true, and partially reverts r241884 which modifies NVPTXTTIImpl::getNumberOfRegisters. It also fixes a performance bug in LoopVectorizer. Even if a target has no vector registers, vectorization may still help ILP. So, we need both checks to be false before disabling loop vectorization all together. Reviewers: hfinkel Subscribers: llvm-commits, jholewinski Differential Revision: http://reviews.llvm.org/D11108 llvm-svn: 241942
* [MS ABI] Don't generates code for unreferenced inline definitions of library ↵David Majnemer2015-07-102-2/+6
| | | | | | | | | | | builtins We should only consider declarations which were written, implicit declarations shouldn't be considered. This fixes PR24084. llvm-svn: 241941
* Temporarily disable check-sanitizer tests on 64-bit Windows.Peter Collingbourne2015-07-101-1/+3
| | | | llvm-svn: 241940
* Use __is_identifier to detect __decltype and not the clang version.Eric Fiselier2015-07-101-24/+19
| | | | llvm-svn: 241939
* Fix `llvm-config` to emit the linker flag for the combined shared object ↵JF Bastien2015-07-104-2/+50
| | | | | | | | | | | | | | | | | built by autoconfig/make instead of the individual components. Summary: This fixes `llvm-config` instead of fixing the makefiles because, AIUI, LLVM's autoconfig/make build system is on the way out anyway. This change only affects builds that use autoconfig/make. Reviewers: jfb Subscribers: echristo, dschuff, llvm-commits Differential Revision: http://reviews.llvm.org/D10716 llvm-svn: 241938
* [Object][ELF] Handle the dynamic string table in files without a section table.Michael J. Spencer2015-07-102-6/+44
| | | | llvm-svn: 241937
* [modules] Fix "prefer own module over others" rule when selecting a module ↵Richard Smith2015-07-102-3/+3
| | | | | | for a header to work in the presence of module hierarchy. llvm-svn: 241936
* Add an experimental flag -fsanitize-memory-use-after-dtor.Evgeniy Stepanov2015-07-106-0/+18
| | | | | | | | | | | This flag will enable detection of use-after-destructor (but before memory deallocation) bugs. No actual functionality yet. https://code.google.com/p/address-sanitizer/issues/detail?id=73 Patch by Naomi Musgrave. llvm-svn: 241935
* Changed Driver::getToolChain() to use Triple as an argument.Artem Belevich2015-07-102-84/+85
| | | | | | Differential Revision: http://reviews.llvm.org/D11105 llvm-svn: 241934
* Fix enum BitcodeError to not define a zero-valued error code.Jan Wen Voung2015-07-101-1/+1
| | | | | | | | | | | | | Summary: std::error_code assumes it isn't an error if the error code is zero. Patch by Karl Schimpf Reviewers: rafael Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10815 llvm-svn: 241933
* [LoopDist/LoopVer] Move LoopVersioning to a new module, NFCAdam Nemet2015-07-104-115/+208
| | | | | | | | | | | | | | | | | | | Summary: The class will obviously need improvement down the road. For one, there is no reason that addPHINodes would have to be exposed like that. I will make this and other improvements in follow-up patches. The main goal is to be able to share this functionality. The LoopLoadElimination pass I am working on needs it too. Later we can move other clients as well (LV and Ashutosh's LICMVer). Reviewers: hfinkel, ashutosh.nema Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10577 llvm-svn: 241932
* [LoopDist] Move loop-versioning helper functions to Cloning, NFCAdam Nemet2015-07-103-66/+86
| | | | | | | | | | | | | | Summary: This makes them available to the LoopVersioning class as that is moved to its own module in the next patch. Reviewers: ashutosh.nema, hfinkel Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10576 llvm-svn: 241931
* [inlineasm] Attach readonly and readnone to inline-asm instructions.Akira Hatanaka2015-07-102-1/+58
| | | | | | | | | | | | | | Previously, clang/llvm treated inline-asm instructions conservatively, choosing not to eliminate the instructions or hoisting them out of a loop even when it was safe to do so. This commit makes changes to attach a readonly or readnone attribute to an inline-asm instruction, which enables passes such as LICM and EarlyCSE to move or optimize away the instruction. rdar://problem/11358192 Differential Revision: http://reviews.llvm.org/D10546 llvm-svn: 241930
* Teach clang that -no-pthread is a valid command line optionYaron Keren2015-07-101-0/+1
| | | | | | | | | | | | | The winpthreads library in mingw-w64 passes -no-pthread when building since pthreads is not available to build itself and pthreads it is linked by default. clang does not link to pthreads by default but did error on unknown -no-pthread option thus stopping the winpthreads build. http://reviews.llvm.org/D11087 Patch by Martell Malone. llvm-svn: 241929
* ARMLoadStoreOpt: Merge subs/adds into LDRD/STRD; Factor out common codeMatthias Braun2015-07-102-170/+238
| | | | | | | | | | | | This commit factors out common code from MergeBaseUpdateLoadStore() and MergeBaseUpdateLSMultiple() and introduces a new function MergeBaseUpdateLSDouble() which merges adds/subs preceding/following a strd/ldrd instruction into an strd/ldrd instruction with writeback where possible. Differential Revision: http://reviews.llvm.org/D10676 llvm-svn: 241928
* ComputeKnownBits: be a bit smarter about ADDsFiona Glaser2015-07-103-12/+22
| | | | | | | | If our two inputs have known top-zero bit counts M and N, we trivially know that the output cannot have any bits set in the top (min(M, N)-1) bits, since nothing could carry past that point. llvm-svn: 241927
* ARMLoadStoreOptimizer: Create LDRD/STRD on thumb2Matthias Braun2015-07-107-45/+132
| | | | | | Differential Revision: http://reviews.llvm.org/D10623 llvm-svn: 241926
* Refactor PPC ABI handling to accept and silently ignore -mabi=altivec.Eric Christopher2015-07-102-3/+10
| | | | | | | | | All of the ABIs we support are altivec style anyhow and so the option doesn't make much sense with the modern ABIs. We could make this a more noisy ignore, but it would break builds for projects that just pass it along by default because of historical reasons. llvm-svn: 241925
* Fix a couple of typos: specifc->specific.Eric Christopher2015-07-102-2/+2
| | | | llvm-svn: 241924
* WebAssembly: basic instructions todo, and basic register info.JF Bastien2015-07-1016-19/+331
| | | | | | | | | | | | | | Summary: This code is based on AArch64 for modern backend good practice, and NVPTX for virtual ISA concerns. Reviewers: sunfish Subscribers: aemerson, llvm-commits, jfb Differential Revision: http://reviews.llvm.org/D11070 llvm-svn: 241923
OpenPOWER on IntegriCloud