summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* [SROA] Adjust to new clang-format style.Chandler Carruth2014-02-251-2/+2
| | | | llvm-svn: 202134
* Reuse constants for COFF string table entry offsetsNico Rieck2014-02-251-7/+9
| | | | llvm-svn: 202130
* [SROA] Fix a *glaring* bug in r202091: you have to actually *write*Chandler Carruth2014-02-251-0/+2
| | | | | | | | | | | | | | the break statement, not just think it to yourself.... No idea how this worked at all, much less survived most bots, my bootstrap, and some bot bootstraps! The Polly one didn't survive, and this was filed as PR18959. I don't have a reduced test case and honestly I'm not seeing the need. What we probably need here are better asserts / debug-build behavior in SmallPtrSet so that this madness doesn't make it so far. llvm-svn: 202129
* Silence GCC warningAlexey Samsonov2014-02-251-1/+1
| | | | llvm-svn: 202119
* Fix typosAlp Toker2014-02-253-5/+5
| | | | llvm-svn: 202107
* [SROA] Add a debugging tool which shuffles the slices sequence prior toChandler Carruth2014-02-251-0/+19
| | | | | | | | | | | | | sorting it. This helps uncover latent reliance on the original ordering which aren't guaranteed to be preserved by std::sort (but often are), and which are based on the use-def chain orderings which also aren't (technically) guaranteed. Only available in C++11 debug builds, and behind a flag to prevent noise at the moment, but this is generally useful so figured I'd put it in the tree rather than keeping it out-of-tree. llvm-svn: 202106
* [SROA] Use a more direct way of determining whether we are processingChandler Carruth2014-02-251-2/+3
| | | | | | | | | | | | | | | | | | the destination operand or source operand of a memmove. It so happens that it was impossible for SROA to try to rewrite self-memmove where the operands are *identical*, because either such a think is volatile (and we don't rewrite) or it is non-volatile, and we don't even register it as a use of the alloca. However, making the 'IsDest' test *rely* on this subtle fact is... Very confusing for the reader. We should use the direct and readily available test of the Use* which gives us concrete information about which operand is being rewritten. No functionality changed, I hope! ;] llvm-svn: 202103
* Indent this continued line.Nick Lewycky2014-02-251-4/+4
| | | | llvm-svn: 202096
* [SROA] Fix another instability in SROA with respect to the sliceChandler Carruth2014-02-251-66/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ordering. The fundamental problem that we're hitting here is that the use-def chain ordering is *itself* not a stable thing to be relying on in the rewriting for SROA. Further, we use a non-stable sort over the slices to arrange them based on the section of the alloca they're operating on. With a debugging STL implementation (or different implementations in stage2 and stage3) this can cause stage2 != stage3. The specific aspect of this problem fixed in this commit deals with the rewriting and load-speculation around PHIs and Selects. This, like many other aspects of the use-rewriting in SROA, is really part of the "strong SSA-formation" that is doen by SROA where it works very hard to canonicalize loads and stores in *just* the right way to satisfy the needs of mem2reg[1]. When we have a select (or a PHI) with 2 uses of the same alloca, we test that loads downstream of the select are speculatable around it twice. If only one of the operands to the select needs to be rewritten, then if we get lucky we rewrite that one first and the select is immediately speculatable. This can cause the order of operand visitation, and thus the order of slices to be rewritten, to change an alloca from promotable to non-promotable and vice versa. The fix is to defer all of the speculation until *after* the rewrite phase is done. Once we've rewritten everything, we can accurately test for whether speculation will work (once, instead of twice!) and the order ceases to matter. This also happens to simplify the other subtlety of speculation -- we need to *not* speculate anything unless the result of speculating will make the alloca fully promotable by mem2reg. I had a previous attempt at simplifying this, but it was still pretty horrible. There is actually already a *really* nice test case for this in basictest.ll, but on multiple STL implementations and inputs, we just got "lucky". Fortunately, the test case is very small and we can essentially build it in exactly the opposite way to get reasonable coverage in both directions even from normal STL implementations. llvm-svn: 202092
* llvm-dwarfdump: Support for debug_line.dwo section for file names for type ↵David Blaikie2014-02-244-15/+35
| | | | | | units under fission. llvm-svn: 202091
* Make some DataLayout pointers const.Rafael Espindola2014-02-2420-51/+53
| | | | | | No functionality change. Just reduces the noise of an upcoming patch. llvm-svn: 202087
* trivial test commitAlbrecht Kadlec2014-02-241-1/+0
| | | | llvm-svn: 202084
* Fix unused variableMatt Arsenault2014-02-241-3/+3
| | | | llvm-svn: 202080
* R600/SI - Add new CI arithmetic instructions.Matt Arsenault2014-02-244-2/+72
| | | | | | | Does not yet include larger part required to match v_mad_i64_i32 / v_mad_u64_u32. llvm-svn: 202077
* R600: Make check clearer.Matt Arsenault2014-02-241-1/+1
| | | | | | | The check is clearer as southern islands or later, rather than checking for later than northern islands. llvm-svn: 202076
* Fix DOT4 missing from getTargetOpcodeNameMatt Arsenault2014-02-241-0/+1
| | | | llvm-svn: 202075
* Add missing constMatt Arsenault2014-02-241-1/+1
| | | | llvm-svn: 202074
* Trivial code simplificationMatt Arsenault2014-02-241-2/+1
| | | | llvm-svn: 202073
* SLPVectorizer: Try vectorizing 'splat' storesArnold Schwaighofer2014-02-241-3/+7
| | | | | | | | | Vectorize sequential stores of a broadcasted value. 5% on eon. radar://16124699 llvm-svn: 202067
* [X86][SchedModel] Add missing scheduling model for SSE related instructions.Quentin Colombet2014-02-244-279/+754
| | | | | | | | | | The patch defines new or refines existing generic scheduling classes to match the behavior of the SSE instructions. It also maps those scheduling classes on the related SSE instructions. <rdar://problem/15607571> llvm-svn: 202065
* Add a dwarf number to the Y register.Roman Divacky2014-02-241-1/+1
| | | | llvm-svn: 202057
* Replace the F_Binary flag with a F_Text one.Rafael Espindola2014-02-2416-21/+23
| | | | | | | | | After this I will set the default back to F_None. The advantage is that before this patch forgetting to set F_Binary would corrupt a file on windows. Forgetting to set F_Text produces one that cannot be read in notepad, which is a better failure mode :-) llvm-svn: 202052
* LTO: Add the loop vectorizer to the LTO pipeline.Arnold Schwaighofer2014-02-241-0/+3
| | | | | | | | | | | | | During the LTO phase LICM will move loop invariant global variables out of loops (informed by GlobalModRef). This makes more loops countable presenting opportunity for the loop vectorizer. Adding the loop vectorizer improves some TSVC benchmarks and twolf/ref dataset (5%) on x86-64. radar://15970632 llvm-svn: 202051
* Don't make F_None the default.Rafael Espindola2014-02-246-8/+8
| | | | | | This will make it easier to switch the default to being binary files. llvm-svn: 202042
* [asan] simplify the code that compute the shadow offset; get rid of two ↵Kostya Serebryany2014-02-241-46/+26
| | | | | | internal flags that allowed to override it. The tests pass, but still this change might break asan on some platform not covered by tests. If you see this, please submit a fix with a test. llvm-svn: 202033
* Add AArch64 big endian Target (aarch64_be)Christian Pirker2014-02-2415-86/+192
| | | | llvm-svn: 202024
* AVX-512: Fixed encoding of VPCMPEQ and VPCMPGTElena Demikhovsky2014-02-241-4/+8
| | | | llvm-svn: 202015
* Share a createUniqueEntity implementation between unix and windows.Rafael Espindola2014-02-243-205/+90
| | | | | | | The only extra bit of functionality that had to be exposed for this be be implemented in Path.cpp is opening a file in rw mode. llvm-svn: 202005
* Delete dead code.Rafael Espindola2014-02-242-12/+0
| | | | llvm-svn: 202001
* Asm Parser: support .error directiveSaleem Abdulrasool2014-02-231-10/+34
| | | | | | | | The .error directive is similar to .err in that it will halt assembly if it is evaluated for assembly. However, it permits a user supplied message to be rendered. llvm-svn: 201999
* AsmParser: support .ifeqs directiveSaleem Abdulrasool2014-02-231-2/+44
| | | | | | | The .ifeqs directive assembles the following code if the quoted string parameters are equal. The strings must be quoted using double quotes. llvm-svn: 201998
* SPARC: Implement TRAP lowering. Matches what GCC emits.Benjamin Kramer2014-02-232-0/+5
| | | | llvm-svn: 201994
* ARMAsmParser: whitespaceSaleem Abdulrasool2014-02-231-4/+4
| | | | llvm-svn: 201989
* ARM IAS: support .align without parametersSaleem Abdulrasool2014-02-231-0/+20
| | | | | | | | .align is handled specially on certain targets. .align without any parameters on ARM indicates a default alignment (4). Handle the special case in the target parser, but fall back to the generic parser for the normal version. llvm-svn: 201988
* MCAsmParser: support .ifneSaleem Abdulrasool2014-02-231-3/+7
| | | | | | | The .ifne directive assembles the following section of code if the argument expression is non-zero. Effectively, it is equivalent to if. llvm-svn: 201986
* MCAsmParser: handle space properly for .ifc/.ifncSaleem Abdulrasool2014-02-231-1/+2
| | | | | | | | If the strings are not quoted, the first string stops at the first comma, and the second string stops at the end of the line. Strings which contain whitespace should be quoted. Unquoted space is to be discarded. llvm-svn: 201985
* MCAsmParser: add support for .err directiveSaleem Abdulrasool2014-02-231-0/+16
| | | | | | | The .err directive produces an error whenever it is assembled. This can be useful for preventing assembly when an unexpected condition occurs. llvm-svn: 201984
* Use static instead of an anonymous namespace.Rafael Espindola2014-02-232-35/+31
| | | | llvm-svn: 201983
* AVX-512: Fixed encoding of VPTESTMQElena Demikhovsky2014-02-231-8/+11
| | | | llvm-svn: 201980
* Simplify remove, create_directory and create_directories.Rafael Espindola2014-02-233-52/+34
| | | | | | | | | | | | | | | Before this patch they would take an boolean argument to say if the path already existed. This was redundant with the returned error_code which is able to represent that. This allowed for callers to incorrectly check only the existed flag instead of first checking the error code. Instead, pass in a boolean flag to say if the previous (non-)existence should be an error or not. Callers of the of the old simple versions are not affected. They still ignore the previous (non-)existence as they did before. llvm-svn: 201979
* Use simpler form of llvm::sys::fs::remove.Rafael Espindola2014-02-231-2/+1
| | | | llvm-svn: 201975
* LocalStackSlotAllocation: Turn one-iteration loop into if.Benjamin Kramer2014-02-231-12/+5
| | | | | | No functionality change. llvm-svn: 201974
* Simplify linking to system librariesNAKAMURA Takumi2014-02-231-2/+26
| | | | | | | | | | | | | | | | | | | | | | | | | The LLVMSupport library implementation consolidates all dependencies on system libraries. Move the logic gathering system libraries out of 'cmake/modules/LLVM-Config.cmake' and into 'lib/Support/CMakeLists.txt'. Use the target_link_libraries() command there to tell CMake about the link dependencies of the LLVMSupport implementation. CMake will automatically propagate this to all targets that link LLVMSupport directly or indirectly. We still need to build knowledge of system library dependencies into 'llvm-config'. Store the list of libraries needed in a property on LLVMSupport and teach 'tools/llvm-config/CMakeLists.txt' to retrieve it from there. Drop all calls to 'link_system_libs' and 'get_system_libs' from our CMake code. Replace their implementations with a warning that explains the calls are no longer necessary. Also drop from 'LLVMConfig.cmake' the HAVE_* and related variables that were published there only to allow 'get_system_libs' to run outside our build process. Contributed by Brad King. llvm-svn: 201969
* ARM IAS: support .short and .hwordSaleem Abdulrasool2014-02-231-5/+9
| | | | | | | | This adds support for the .short and its alias .hword for adding literal values into the object file. This is similar to the .word directive, however, rather than inserting a value of 4 bytes, adds a 2-byte value. llvm-svn: 201968
* Fix typoManman Ren2014-02-221-1/+1
| | | | llvm-svn: 201944
* MC: Support COFF string tables larger than 10MBNico Rieck2014-02-222-3/+69
| | | | | | | | Offsets past the range of single-slash encoding are encoded as base64, padded to 6 characters, and prefixed with two slashes. This encoding is undocumented but used by MSVC. llvm-svn: 201940
* Don't inline get[S|U]LEB128Size() until they are proved to be hot.Logan Chien2014-02-222-0/+45
| | | | llvm-svn: 201939
* Move get[S|U]LEB128Size() to LEB128.h.Logan Chien2014-02-226-62/+27
| | | | | | | | | | This commit moves getSLEB128Size() and getULEB128Size() from MCAsmInfo to LEB128.h and removes some copy-and-paste code. Besides, this commit also adds some unit tests for the LEB128 functions. llvm-svn: 201937
* Include <cctype> for isdigit().Logan Chien2014-02-221-0/+1
| | | | llvm-svn: 201930
* [CodeGenPrepare] Fix the check of the legality of an instruction.Quentin Colombet2014-02-221-1/+6
| | | | | | | | | The API expects an ISD opcode, not an IR opcode. Fixes a regression for R600. Related to <rdar://problem/15519855>. llvm-svn: 201923
OpenPOWER on IntegriCloud