summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* llvm-bcanalyzer: Add a field that was missed in r241016.Adrian Prantl2015-06-301-0/+1
| | | | llvm-svn: 241026
* COFF: Make DefinedCOFF one pointer smaller.Rui Ueyama2015-06-301-8/+9
| | | | | | | | | | The size of this class actually matters because this is the most popular class among all classes. We create a Defined symbol for each defined symbol in a symbol table. That can be millions for a large program. For example, linking LLD instantiates this class millions times. llvm-svn: 241025
* Object/COFF: Define coff_symbol_generic.Rui Ueyama2015-06-302-6/+27
| | | | | | | | | | | | | | If you only need Name and Value fields in the COFF symbol, you don't need to distinguish 32 bit and 64 bit COFF symbols. These fields start at the same offsets and have the same size. This data strucutre is one pointer smaller than COFFSymbolRef thus slightly efficient. I'll use this class in LLD as we create millions of LLD symbol objects that currently contain COFFSymbolRef. Shaving off 8 byte (or 4 byte on 32 bit) from that class actually matters becasue of the number of objects we create in LLD. llvm-svn: 241024
* Use asserts for checks that should never fail.Rafael Espindola2015-06-291-37/+11
| | | | | | | If a section is not SHT_REL or SHT_RELA, we never create a valid iterator, so the getRelocation* methods should always see a section with the correct type. llvm-svn: 241023
* [WebAssembly] Initial WebAssembly backendDan Gohman2015-06-2956-4/+1913
| | | | | | | This WebAssembly backend is just a skeleton at this time and is not yet functional. llvm-svn: 241022
* Don't return error_code from function that never fails.Rafael Espindola2015-06-2923-106/+49
| | | | llvm-svn: 241021
* COFF: Use LTOModule::getLinkerOpts() instead of reading the linker ↵Peter Collingbourne2015-06-291-24/+1
| | | | | | directives ourselves. llvm-svn: 241020
* PR23942: a pure-specifier's integer literal must be spelled '0'Richard Smith2015-06-292-3/+28
| | | | llvm-svn: 241019
* lto: Clean up C libLTO interfaces pertaining to linker flags.Peter Collingbourne2015-06-293-58/+7
| | | | | | | | | Specifically, remove the dependent library interface and replace the existing linker option interface with a new one that returns a single list of flags. Differential Revision: http://reviews.llvm.org/D10820 llvm-svn: 241018
* Add a DIModule metadata node to the IR.Adrian Prantl2015-06-2916-0/+261
| | | | | | | | | | | | | | | | | | | It is meant to be used to record modules @imported by the current compile unit, so a debugger an import the same modules to replicate this environment before dropping into the expression evaluator. DIModule is a sibling to DINamespace and behaves quite similarly. In addition to the name of the module it also records the module configuration details that are necessary to uniquely identify the module. This includes the configuration macros (e.g., -DNDEBUG), the include path where the module.map file is to be found, and the isysroot. The idea is that the backend will turn this into a DW_TAG_module. http://reviews.llvm.org/D9614 rdar://problem/20965932 llvm-svn: 241017
* bcanalyzer: Rewrite all the METADATA_ codesDuncan P. N. Exon Smith2015-06-291-9/+31
| | | | | | | | Add all the new `Metadata` codes since LLVM 3.6, and at the same time follow the precedent set in other blocks by removing the `METADATA_` prefix from the string output. llvm-svn: 241016
* bcanalyzer: Use a macro to decode bitcodes, NFCDuncan P. N. Exon Smith2015-06-291-86/+85
| | | | | | | I'm about to add a whack of missing names for metadata. Add a macro to make this easier. llvm-svn: 241015
* Revert "Mark test_sb_api_listener_event_process_state as flakey"Ying Chen2015-06-291-1/+0
| | | | | | | This reverts commit a4f5f4da7e164b7ac358a75f2e4254c25718ad4b. This test fails 100% with gcc4.9.2, revert it first. Will find out why xfail is overruled by xflaky. llvm-svn: 241014
* Mark LWG#2439 as complete. This is a tightening up the wording; no code ↵Marshall Clow2015-06-291-1/+1
| | | | | | changes required. llvm-svn: 241013
* Reapply "Use gethostuuid() on Mac to identify hosts for LockFileManager"Ben Langmuir2015-06-291-14/+56
| | | | | | | | | | | | | | Reapplies r241005 after fixing the build on non-Mac platforms. Original commit message below. The hostname can be very unstable when there are many machines on the network competing for the same name. Using the hardware UUID makes it less likely to have collisions or to consider files written by the current host to be owned by a different one at a later time. rdar://problem/21512307 llvm-svn: 241012
* COFF: Split ObjectFile::createSymbolBody into small functions. NFC.Rui Ueyama2015-06-292-15/+28
| | | | llvm-svn: 241011
* Teach LTOModule to emit linker flags for dllexported symbols, plus interface ↵Peter Collingbourne2015-06-2911-194/+152
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | cleanup. This change unifies how LTOModule and the backend obtain linker flags for globals: via a new TargetLoweringObjectFile member function named emitLinkerFlagsForGlobal. A new function LTOModule::getLinkerOpts() returns the list of linker flags as a single concatenated string. This change affects the C libLTO API: the function lto_module_get_*deplibs now exposes an empty list, and lto_module_get_*linkeropts exposes a single element which combines the contents of all observed flags. libLTO should never have tried to parse the linker flags; it is the linker's job to do so. Because linkers will need to be able to parse flags in regular object files, it makes little sense for libLTO to have a redundant mechanism for doing so. The new API is compatible with the old one. It is valid for a user to specify multiple linker flags in a single pragma directive like this: #pragma comment(linker, "/defaultlib:foo /defaultlib:bar") The previous implementation would not have exposed either flag via lto_module_get_*deplibs (as the test in TargetLoweringObjectFileCOFF::getDepLibFromLinkerOpt was case sensitive) and would have exposed "/defaultlib:foo /defaultlib:bar" as a single flag via lto_module_get_*linkeropts. This may have been a bug in the implementation, but it does give us a chance to fix the interface. Differential Revision: http://reviews.llvm.org/D10548 llvm-svn: 241010
* [FaultMaps][Docs] Document the ImplicitNullChecks pass.Sanjoy Das2015-06-291-0/+42
| | | | llvm-svn: 241009
* Move llvm_unreachable out of switch to avoid -Wswitch-covered-defualt.Rui Ueyama2015-06-291-6/+3
| | | | llvm-svn: 241008
* Revert "Use gethostuuid() on Mac to identify hosts for LockFileManager"Ben Langmuir2015-06-291-54/+14
| | | | | | | | Broke non-Mac builds. This reverts commit r241005. llvm-svn: 241007
* Add -lpthread to LLDB shared lib link line unconditionallyKeno Fischer2015-06-293-5/+5
| | | | | | | | | | | Usually -lpthread is included due to LLVM link options, but when LLVM threading is disabled, this does not happen. pthread is still needed however because LLDB uses threading regardless of whether LLVM is built with threading support or not. Differential Revision: http://reviews.llvm.org/D5431 llvm-svn: 241006
* Use gethostuuid() on Mac to identify hosts for LockFileManagerBen Langmuir2015-06-291-14/+54
| | | | | | | | | | | The hostname can be very unstable when there are many machines on the network competing for the same name. Using the hardware UUID makes it less likely to have collisions or to consider files written by the current host to be owned by a different one at a later time. rdar://problem/21512307 llvm-svn: 241005
* Silence MSVC "not all control paths return a value" warning.Rui Ueyama2015-06-291-0/+6
| | | | llvm-svn: 241004
* ARM: add correct kill flags when combining stm instructionsTim Northover2015-06-292-0/+49
| | | | | | | | | When the store sequence being combined actually stores the base register, we should not mark it as killed until the end. rdar://21504262 llvm-svn: 241003
* X86: Rework inline asm integer register specification.Matthias Braun2015-06-295-73/+203
| | | | | | | | | | | | | | | | | | | | | | | This is a new version of http://reviews.llvm.org/D10260. It turned out that when you specify an integer register in inline asm on x86 you get the register of the required type size back. That means that X86TargetLowering::getRegForInlineAsmConstraint() has to accept any of the integer registers and adapt its size to the given target size which may be any 8/16/32/64 bit sized type. Surprisingly that means given a constraint of "{ax}" and a type of MVT::F32 we need to return X86::EAX. This change makes this face explicit, the previous code seemed like working by accident because there it never returned an error once a register was found. On the other hand this rewrite allows to actually return errors for invalid situations like requesting an integer register for an i128 type. Related to rdar://21042280 Differential Revision: http://reviews.llvm.org/D10813 llvm-svn: 241002
* [opt] Devirtualize the SymbolBody type hierarchy and start compactingChandler Carruth2015-06-292-178/+234
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | its members into the base class. First, to help motivate this kind of change, understand that in a self-link, LLD creates 5.5 million defined regular symbol bodies (and 6 million symbol bodies total). A significant portion of its time is spent allocating the memory for these symbols, and befor ethis patch the defined regular symbol body objects alone consumed some 420mb of memory during the self link. As a consequence, I think it is worth expending considerable effort to make these objects as memory efficient as possible. This is the first of several components of that. This change starts with the goal of removing the virtual functins from SymbolBody so that it can avoid having a vptr embedded in it when it already contains a "kind" member, and that member can be much more compact than a vptr. The primary way of doing this is to sink as much of the logic that we would have to dispatch for into data in the base class. As part of this, I made the various flags bits that will pack into a bitfield with the kind tag. I also sank the Name down to eliminate the dispatch for that, and used LLVM's RTTI-style dispatch for everything else (most of which is cold and so doesn't matter terribly if we get minutely worse lowering than a vtable dispatch). As I was doing this, I wanted to make the RTTI-dispatch (which would become much hotter than before) as efficient as possible, so I've re-organized the tags somewhat. Notably, the common case (regular defined symbols) is now zero which we can test for faster. I also needed to rewrite the comparison routine used during resolving symbols. This proved to be quite complex as the semantics of the existing one were very subtle due to the back-and-forth virtual dispatch caused by re-dispatching with reversed operands. I've consolidated it to a single function and tried to comment it quite a bit more to help explain what is going on. However, this may need more comments or other explanations. It at least passes all the regression tests. I'm not working on Windows, so I can't fully test it. With all of these changes, the size of a DefinedRegular symbol on a 64-bit build goes from 80 bytes to 64 bytes, and we save approximately 84mb or 20% of the memory consumed by these symbol bodies during the link. The link time appears marginally faster as well, and the profile hotness of the memory allocation subsystem got a bit better, but there is still a lot of allocation traffic. Differential Revision: http://reviews.llvm.org/D10792 llvm-svn: 241001
* [cleanup] Clean up the flow of creating a symbol body for regular symbols.Chandler Carruth2015-06-291-17/+17
| | | | | | | | | | | | This uses a single cast and test to get the section for the symbol, and uses the cast_or_null<> pattern throughout to handle the known type but unknown non-null-ness. No functionality changed. Differential Revision: http://reviews.llvm.org/D10791 llvm-svn: 241000
* [LoopSimplify] Set proper debug location in loop backedge blocks.Alexey Samsonov2015-06-292-12/+29
| | | | | | | | | | | | | Set debug location for terminator instruction in loop backedge block (which is an unconditional jump to loop header). We can't copy debug location from original backedges, as there can be several of them, with different debug info locations. So, we follow the approach of SplitBlockPredecessors, and copy the debug info from first non-PHI instruction in the header (i.e. destination block). This is yet another change for PR23837. llvm-svn: 240999
* [FaultMaps] Fix test case.Sanjoy Das2015-06-291-16/+1
| | | | | | | implicit-null-check-negative.ll had a missing 2>&1. Fix this, and remove an incorrect test case that this exposes. llvm-svn: 240998
* Update for llvm api change.Rafael Espindola2015-06-291-1/+1
| | | | llvm-svn: 240997
* Convert obj->getSymbolName to sym->getName.Rafael Espindola2015-06-295-17/+18
| | | | | | I doesn't depend on the object anymore. llvm-svn: 240996
* [opt] Replace the recursive walk for GC with a worklist algorithm.Chandler Carruth2015-06-294-22/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This flattens the entire liveness walk from a recursive mark approach to a worklist approach. It also sinks the worklist management completely out of the SectionChunk and into the Writer by exposing the ability to iterato over children of a chunk and over the symbol bodies of relocated symbols. I'm not 100% happy with the API names, so suggestions welcome there. This allows us to use a single worklist for the entire recursive walk and would also be a natural place to take advantage of parallelism at some future point. With this, we completely inline away the GC walk into the Writer::markLive function and it makes it very easy to profile what is slow. Currently, time is being wasted checking whether a Chunk isa SectionChunk (it essentially always is), finding (or skipping) a replacement for a symbol, and chasing pointers between symbols and their chunks. There are a bunch of things we can do to fix this, and its easier to do them after this change IMO. This change alone saves 1-2% of the time for my self-link of lld.exe (which I'm running and benchmarking on Linux ironically). Perhaps more notably, we'll no longer blow out the stack for large links. =] Just as an FYI, at this point, I/O is starting to really dominate the profile. Well over 10% of the time appears to be inside the kernel doing page table silliness. I think a decent chunk of this can be nuked as well, but it's a little odd as cross-linking in this way isn't really the primary goal here. Differential Revision: http://reviews.llvm.org/D10790 llvm-svn: 240995
* Add support for the x86 builtin __builtin_cpu_supports.Eric Christopher2015-06-299-0/+174
| | | | | | | | | | | | | | | | | | | | This matches the implementation of the gcc support for the same feature, including checking the values set up by libgcc at runtime. The structure looks like this: unsigned int __cpu_vendor; unsigned int __cpu_type; unsigned int __cpu_subtype; unsigned int __cpu_features[1]; with a set of enums to match various fields that are field out after parsing the output of the cpuid instruction. This also adds a set of errors checking for valid input (and cpu). compiler-rt support for this and the other builtins in this family (__builtin_cpu_init and __builtin_cpu_is) are forthcoming. llvm-svn: 240994
* Make sure that SharingPtr.h appears in the LLDB.framework by making it a ↵Greg Clayton2015-06-291-0/+2
| | | | | | | | public header in the LLDB framework target. This fixes test issues with building lldb/test/api/multithreaded and a few other tests that build against the LLDB.framework in our build directory. llvm-svn: 240993
* [asan] Fix SanitizerCommon.PthreadDestructorIterations test on Android L.Evgeniy Stepanov2015-06-298-28/+37
| | | | | | | On Android L, TSD destructors run 8 times instead of 4. Back to 4 times on the current master branch (as well as on K). llvm-svn: 240992
* [DAGCombiner] Fix & simplify constant folding of sext/zext.Pawel Bylica2015-06-292-13/+103
| | | | | | | | | | | | | | | | Summary: This patch fixes the cases of sext/zext constant folding in DAG combiner where constans do not fit 64 bits. The fix simply removes un$ Test Plan: New regression test included. Reviewers: RKSimon Reviewed By: RKSimon Subscribers: RKSimon, llvm-commits Differential Revision: http://reviews.llvm.org/D10607 llvm-svn: 240991
* [MMI] Use TinyPtrVector instead of PointerUnion with vector.Benjamin Kramer2015-06-293-102/+26
| | | | | | Also simplify duplicated code a bit. No functionality change intended. llvm-svn: 240990
* [CodeGen] Remove atomic sugar from record types in isSafeToConvertDavid Majnemer2015-06-292-7/+25
| | | | | | | | | | We failed to see that we should have deferred the creation of a type which references a type currently under construction because of atomic sugar. This fixes PR23985. llvm-svn: 240989
* More packet reduction when debugging with GDB server.Greg Clayton2015-06-295-62/+238
| | | | | | | | | - Avoid sending the qfThreadInfo, qsThreadInfo packets if we have a stop reply packet with the threads already (save 2 round trip packets) - Include the qname, qserial and qkind in the JSON info - Report the qname, qserial and qkind to the thread so it can cache it to avoid many packets on MacOSX and iOS - Don't clear all discoverable settings when we exec, just the ones we need to saves 1-5 packets for each exec. llvm-svn: 240988
* Tidy comment.Diego Novillo2015-06-291-1/+1
| | | | llvm-svn: 240987
* [Polly] Add -std=c99 flag only to C source filesMichael Kruse2015-06-291-2/+7
| | | | | | | | | | | | | | Summary: Adding the flag to C++ source files emits a warning, hence we set the compile flag depending on the file's language. Reviewers: grosser Subscribers: Meinersbur, pollydev, llvm-commits Projects: #polly Differential Revision: http://reviews.llvm.org/D10809 llvm-svn: 240986
* Remove _KMP_BUILD_TIME macro from kmp_version.cJonathan Peyton2015-06-291-1/+1
| | | | | | | | At the suggestion of Chandler Carruth, I've removed the timestamp macro, _KMP_BUILD_TIME, that cmake currently sets to "No_Timestamp" and replaced it with standard __DATE__ and __TIME__ macros inside kmp_version.c. llvm-svn: 240985
* More range-based for loops. NFCDouglas Katzman2015-06-291-7/+5
| | | | llvm-svn: 240984
* Rewrite FileSpec::EnumerateDirectory to avoid code duplication.Chaoren Lin2015-06-292-199/+17
| | | | | | | | | | | | Reviewers: clayborg Reviewed By: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D10811 llvm-svn: 240983
* [opt] Hoist the call throuh SymbolBody::getReplacement out of the inlineChandler Carruth2015-06-294-8/+20
| | | | | | | | | | | | | | | | | | | method to get a SymbolBody and into the callers, and kill now dead includes. This removes the need to have the SymbolBody definition when we're defining the inline method and makes it a better inline method. That was the only reason for a lot of header includes here. Removing these and using forward declarations actually uncovers a bunch of cross-header dependencies that I've fixed while I'm here, and will allow me to introduce some *important* inline code into Chunks.h that requires the definition of ObjectFile. No functionality changed at this point. Differential Revision: http://reviews.llvm.org/D10789 llvm-svn: 240982
* Fix bug #23967. The gtest and gtest_main targets were exported into theDan Liew2015-06-292-3/+16
| | | | | | | | | | | | | | | | | | | CMake files and should not be by both build systems and also the targets were also installed by the CMake build system which they should not be. The problem was that - the CMake build of LLVM installs and exports the gtest library targets. We should not being doing this, these are not part of LLVM. - the Autoconf/Makefile build of LLVM still had gtest libraries in the installed LLVMConfig.cmake. These problems would cause problems for an external project because when calling llvm_map_components_to_libnames(XXX all) ${XXX} would to contain LLVM's internal gtest libraries. llvm-svn: 240981
* Comment fixes. NFC.Douglas Katzman2015-06-292-2/+3
| | | | | | | | | - Hexagon options were physically next to to ones that had a preceding comment saying "Double dash options", which they aren't. - The 'ld' tool classes are named Linker, not Link. llvm-svn: 240980
* Fix buildbot failures for:Greg Clayton2015-06-291-0/+2
| | | | | | | http://lab.llvm.org:8011/builders/lldb-x86-win7-msvc/builds/6152 http://lab.llvm.org:8011/builders/lldb-x86-windows-msvc/builds/7422 llvm-svn: 240979
* Avoid a recursive function call that could run LLDB out of file descriptors ↵Greg Clayton2015-06-293-18/+231
| | | | | | | | | | | | | | | | | in FileSystem::DeleteDirectory(...). Fixes include: - use FileSystem::Unlink() instead of a direct call to ::unlink(...) when deleting files when iterating through the current directory - save directories from current directory in a list and iterate through those _after_ the current directory has been iterated - Use new FileSpec::ForEachItemInDirectory() instead of manually iterating across directories with opendir()/readdir()/closedir() We should switch all code over to using FileSpec::ForEachItemInDirectory(...) in the near future and get rid of FileSpec::EnumerateDirectory(). This is a follow up patch to: http://reviews.llvm.org/D10787 llvm-svn: 240978
* Fix a test case broken by my previous commit.Douglas Gregor2015-06-291-2/+2
| | | | llvm-svn: 240977
OpenPOWER on IntegriCloud