summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Remove annotation for llvm.org/pr19241Ed Maste2014-03-261-1/+0
| | | | | | The issue has been fixed by r204745 and r204750 llvm-svn: 204779
* Implement LWG issue #2135. If something goes wrong in ↵Marshall Clow2014-03-263-5/+5
| | | | | | condition_variable::wait, call terminate() rather than throwing an error. Do this indirectly, by marking the call as 'noexcept'. This is better than just calling terminate() directly, because it gives a better error message on the console. llvm-svn: 204778
* Add tests that should fail when lock() throws. THis is part of LWG issue ↵Marshall Clow2014-03-262-0/+104
| | | | | | #2135. No library changes here. llvm-svn: 204777
* Add existing warnings to -Waddress so that it works closer to what GCC has.Richard Trieu2014-03-263-4/+30
| | | | | | | | Previously, -Waddress was empty. Fixes PR9043. llvm-svn: 204776
* Move the -i[no-]system-prefix options from CC1Options.td to Options.td.Alexander Kornienko2014-03-265-18/+22
| | | | | | | | | | | | | | | | Summary: This allows them to be used without -cc1 the same way as -I and -isystem. Renamed the options to --system-header-prefix=/--no-system-header-prefix to avoid interference with -isystem and make the intent of the option cleaner. Reviewers: rsmith Reviewed By: rsmith CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D3185 llvm-svn: 204775
* [lit] Environment variables get stripped in lit. Manually specify locale.Michael J. Spencer2014-03-261-1/+1
| | | | llvm-svn: 204774
* [lit] Python 3.Michael J. Spencer2014-03-263-5/+6
| | | | llvm-svn: 204773
* Remove safeguard from RoundTripYAML pass.Rui Ueyama2014-03-261-14/+6
| | | | | | | | | | | | RoundTripYAML pass is removed from the regular execution pass in r204296, so the safeguard to protect it from OOM error is no longer needed, because we are sure that the pass is only used for tests, and test files are all small. We also want to see RoundTripYAML pass to fail in tests if it fails, rather than silently skipping failing tests. llvm-svn: 204772
* Correctly detect if a symbol uses a reserved section index or not.Rafael Espindola2014-03-262-4/+28
| | | | | | | The logic was incorrect for variables, causing them to end up in the wrong section if the section had an index >= 0xff00. llvm-svn: 204771
* [X86] Add broadcast instructions to the table used by ExeDepsFix pass.Quentin Colombet2014-03-264-10/+144
| | | | | | | | | | | | | | | | | | | | | Adds the different broadcast instructions to the ReplaceableInstrsAVX2 table. That way the ExeDepsFix pass can take better decisions when AVX2 broadcasts are across domain (int <-> float). In particular, prior to this patch we were generating: vpbroadcastd LCPI1_0(%rip), %ymm2 vpand %ymm2, %ymm0, %ymm0 vmaxps %ymm1, %ymm0, %ymm0 ## <- domain change penalty Now, we generate the following nice sequence where everything is in the float domain: vbroadcastss LCPI1_0(%rip), %ymm2 vandps %ymm2, %ymm0, %ymm0 vmaxps %ymm1, %ymm0, %ymm0 <rdar://problem/16354675> llvm-svn: 204770
* Create .symtab_shndxr only when needed.Rafael Espindola2014-03-255-158685/+338
| | | | | | | | | | | | | | | | | | | | | | | We need .symtab_shndxr if and only if a symbol references a section with an index >= 0xff00. The old code was trying to figure out if the section was needed ahead of time, making it a fairly dependent on the code actually writing the table. It was also somewhat conservative and would create the section in cases where it was not needed. If I remember correctly, the old structure was there so that the sections were created in the same order gas creates them. That was valuable when MC's support for ELF was new and we tested with elf-dump.py. This patch refactors the symbol table creation to another class and makes it obvious that .symtab_shndxr is really only created when we are about to output a reference to a section index >= 0xff00. While here, also improve the tests to use macros. One file is one section short of needing .symtab_shndxr, the second one has just the right number. llvm-svn: 204769
* [PowerPC] Select between VSX A-type and M-type FMA instructions just before RAHal Finkel2014-03-254-0/+407
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The VSX instruction set has two types of FMA instructions: A-type (where the addend is taken from the output register) and M-type (where one of the product operands is taken from the output register). This adds a small pass that runs just after MI scheduling (and, thus, just before register allocation) that mutates A-type instructions (that are created during isel) into M-type instructions when: 1. This will eliminate an otherwise-necessary copy of the addend 2. One of the product operands is killed by the instruction The "right" moment to make this decision is in between scheduling and register allocation, because only there do we know whether or not one of the product operands is killed by any particular instruction. Unfortunately, this also makes the implementation somewhat complicated, because the MIs are not in SSA form and we need to preserve the LiveIntervals analysis. As a simple example, if we have: %vreg5<def> = COPY %vreg9; VSLRC:%vreg5,%vreg9 %vreg5<def,tied1> = XSMADDADP %vreg5<tied0>, %vreg17, %vreg16, %RM<imp-use>; VSLRC:%vreg5,%vreg17,%vreg16 ... %vreg9<def,tied1> = XSMADDADP %vreg9<tied0>, %vreg17, %vreg19, %RM<imp-use>; VSLRC:%vreg9,%vreg17,%vreg19 ... We can eliminate the copy by changing from the A-type to the M-type instruction. This means: %vreg5<def,tied1> = XSMADDADP %vreg5<tied0>, %vreg17, %vreg16, %RM<imp-use>; VSLRC:%vreg5,%vreg17,%vreg16 is replaced by: %vreg16<def,tied1> = XSMADDMDP %vreg16<tied0>, %vreg18, %vreg9, %RM<imp-use>; VSLRC:%vreg16,%vreg18,%vreg9 and we remove: %vreg5<def> = COPY %vreg9; VSLRC:%vreg5,%vreg9 llvm-svn: 204768
* [PGO] Add simplified branch weights for Objective-C for-collection loops.Bob Wilson2014-03-252-9/+15
| | | | | | | | | | | | | Conceptually one of these loops is just a while-loop, but the actual code-gen is more complicated. We don't instrument all the different control flow edges to get accurate counts for each conditional branch, nor do I think it makes sense to do so. Instead, make the simplifying assumption that the loop behaves like a while-loop. Use the same branch weights for the first check for an empty collection as would be used for the back-edge of a while loop, and use that same weighting for the innermost loop, ignoring the possibility that there may be some extra code to go fetch more elements. llvm-svn: 204767
* llvm/test/DebugInfo/empty.ll: Suppress crash for targeting pecoff while ↵NAKAMURA Takumi2014-03-251-1/+1
| | | | | | investigating. llvm-svn: 204766
* Use Endian.h to simplify this code a bit.Rafael Espindola2014-03-252-108/+68
| | | | | | | While at it, factor some logic into FragmentWriter. This will allow more code to be factored out of the fairly large ELFObjectWriter. llvm-svn: 204765
* Made the Materializer not write back variablesSean Callanan2014-03-251-5/+23
| | | | | | | | | | | if they didn't change, just like it does for registers. This makes life easier for kernel debugging and any other situation where values are read-only. <rdar://problem/16367795> llvm-svn: 204764
* Add a test case for the previous commitEnrico Granata2014-03-253-0/+83
| | | | llvm-svn: 204763
* <rdar://problem/14862302>Enrico Granata2014-03-251-3/+18
| | | | | | | For small structs, the frame format now prints them as one-liners This follows the same definition that frame variable does for deciding what a "small struct" is, and as such should be fairly consistent with the variable display in general llvm-svn: 204762
* Make sure this test has a looser dependency on the exact class generated ↵Enrico Granata2014-03-251-1/+1
| | | | | | here.. it is going to be some sort of NS-provided String, but let's not bet on the details llvm-svn: 204761
* [configure/make] Propagate names of build host tools when making BuildToolsMeador Inge2014-03-251-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When cross-compiling LLVM itself the configure/make scripts get confused when creating the needed build host tools. For example, building and configuring like: CC_FOR_BUILD='i686-pc-linux-gnu-gcc' CXX_FOR_BUILD='i686-pc-linux-gnu-g++' CXX='i686-mingw32-g++' CC='i686-mingw32-gcc' LD='i686-mingw32-ld' /scratch /meadori/llvm-trunk/src/trunk/configure --host=i686-mingw32 CC_FOR_BUILD='i686-pc-linux-gnu-gcc' CXX_FOR_BUILD='i686-pc-linux-gnu-g++' CXX='i686-mingw32-g++' CC='i686-mingw32-gcc' LD='i686-mingw32-ld' make causes the following build break: checking whether the C compiler works... configure: error: cannot run C compiled programs. If you meant to cross compile, use `--host'. See `config.log' for more details. The 'config.log' shows that i686-mingw32-gcc is being used to create executables for the build host. This patch fixes the problem by propogating the names of the build host tools via BUILD_* when configuring/making BuildTools. Original patch by Ekaterina Sanina. llvm-svn: 204760
* Make ProcessLinux return true for DetachRequiresHalt() because PTRACE_DETACH ↵Andrew MacPherson2014-03-251-0/+3
| | | | | | requires this. llvm-svn: 204759
* [Constant Hoisting] Make the constant candidate map local to the ↵Juergen Ributzka2014-03-251-11/+14
| | | | | | collectConstantCandidates method. llvm-svn: 204758
* PR19249: Don't forget to DiagnoseUseOfDecl for the implicit use of a variableRichard Smith2014-03-252-0/+6
| | | | | | in a lambda capture. llvm-svn: 204757
* <rdar://problem/14515139>Enrico Granata2014-03-257-36/+43
| | | | | | | Add a GetFoundationVersion() to AppleObjCRuntime This API is used to return and cache the major version of Foundation.framework, which is potentially a useful piece of data to key off of to enable or disable certain ObjC related behaviors (especially in data formatters) llvm-svn: 204756
* Use an option alias to implement -gmltDavid Blaikie2014-03-252-4/+2
| | | | | | Review feedback from Reid Kleckner on r203603. llvm-svn: 204755
* [PECOFF] Print out command line if we have expanded response files.Rui Ueyama2014-03-252-4/+17
| | | | | | | | | | | If a response file is given via command line, the final command line arguments will not appear in the log because the actual arguments are in the given file. This patch is to show the final command line if /verbose is specified to help users. llvm-svn: 204754
* -fms-compatibility: Only form implicit member exprs for unqualified idsReid Kleckner2014-03-252-5/+28
| | | | | | | | | If there are any scope specifiers, then a base class must be named or the symbol isn't from a base class. Fixes PR19233. llvm-svn: 204753
* Move calls to DisableAllBreakpointSites() and ↵Andrew MacPherson2014-03-254-10/+3
| | | | | | m_thread_list.DiscardThreadPlans() into base Process::Destroy() instead of in subclass DoDestroy() methods. llvm-svn: 204752
* Added a missing "break" to avoid falling throughSean Callanan2014-03-251-0/+1
| | | | | | when other cases get added. llvm-svn: 204751
* Fixed the IRInterpreter to ignore call instructionsSean Callanan2014-03-251-0/+68
| | | | | | that call debug-information intrinsics. llvm-svn: 204750
* Improve Elf object file UUID calculation performance.Todd Fiala2014-03-252-26/+162
| | | | | | | | | | | This change makes significant improvements in the performance of calculating a UUID within ObjectFileELF, and handles both running processes and core files correctly. This does lazy evaluation of UUID generation and caches the result when calculated. Change by Piotr Rak. llvm-svn: 204749
* [PowerPC] Correct commutable indices for VSX FMA instructionsHal Finkel2014-03-252-0/+18
| | | | | | | | | | Although the first two operands are the ones that can be swapped, the tied input operand is listed before them, so we need to adjust for that. I have a test case for this, but it goes along with an upcoming commit (so it will come soon). llvm-svn: 204748
* Fixed up intermittently failing tests to skip on Linux.Todd Fiala2014-03-254-1/+8
| | | | | | | | | | | Also added 'import sys' on some tests that are using non-standard unittest2.skipUnless blocks with code that is intended to do things that we have more specializes @* attributes for. These skip conditions were failing to execute due to missing import, causing darwin-only tests to run on Linux regardless. Will file a bug for that separately. llvm-svn: 204747
* [PowerPC] Add a TableGen relation for A-type and M-type VSX FMA instructionsHal Finkel2014-03-252-27/+103
| | | | | | | TableGen will create a lookup table for the A-type FMA instructions providing their corresponding M-form opcodes. This will be used by upcoming commits. llvm-svn: 204746
* A fix for: http://llvm.org/bugs/show_bug.cgi?id=19241 Greg Clayton2014-03-251-1/+1
| | | | | | When there was no process, the expression options were set to not ignore breakpoints. This causes debug info to be generated and causes errors when evaluating simple expressions. llvm-svn: 204745
* MS ABI: Mark direct virtual bases as visted when building vtable pathsReid Kleckner2014-03-252-0/+25
| | | | | | Fixes PR19240. In retrospect, this is a fairly obvious bug. :) llvm-svn: 204744
* R600: Move computeMaskedBitsForTargetNode out of AMDILISelLowering.cppMatt Arsenault2014-03-253-39/+12
| | | | | | | | Remove handling of select_cc, since it makes no sense to be there. This now does nothing, but I'll be adding some handling of other target nodes soon. llvm-svn: 204743
* Fix an logic error in the clang driver preventing crtfastmath.o from linking ↵Benjamin Kramer2014-03-256-19/+44
| | | | | | | | | | | | | | when -Ofast is used without -ffast-math In gcc using -Ofast forces linking of crtfastmath.o. In the current clang crtfastmath.o is only linked when -ffast-math/-funsafe-math-optimizations passed. It can lead to performance issues, when using only -Ofast without explicit -ffast-math (I faced with it). My patch fixes inconsistency with gcc behaviour and also introduces few tests on it. Patch by Zinovy Nis! Differential Revision: http://llvm-reviews.chandlerc.com/D3114 llvm-svn: 204742
* blockfreq: Implement Pass::releaseMemory()Duncan P. N. Exon Smith2014-03-254-24/+29
| | | | | | | | | | Implement Pass::releaseMemory() in BlockFrequencyInfo and MachineBlockFrequencyInfo. Just delete the private implementation when not in use. Switch to a std::unique_ptr to make the logic more clear. <rdar://problem/14292693> llvm-svn: 204741
* blockfreq: Use const in MachineBlockFrequencyInfoDuncan P. N. Exon Smith2014-03-254-16/+18
| | | | | | <rdar://problem/14292693> llvm-svn: 204740
* [X86TTI] Make constant base pointers for getElementPtr opaque.Juergen Ributzka2014-03-251-2/+3
| | | | | | | | | If getElementPtr uses a constant as base pointer, then make the constant opaque. This prevents constant folding it with the offset. The offset can usually be encoded in the load/store instruction itself and the base address doesn't have to be rematerialized several times. llvm-svn: 204739
* [Stackmaps][X86TTI] Fix think-o in getIntImmCost calculation.Juergen Ributzka2014-03-251-7/+6
| | | | | | | | The cost for the first four stackmap operands was always TCC_Free. This is only true for the first two operands. All other operands are TCC_Free if they are within 64bit. llvm-svn: 204738
* [DAG] Keep the opaque constant flag when performing unary constant folding ↵Juergen Ributzka2014-03-251-6/+12
| | | | | | | | | | | | operations. Usually opaque constants shouldn't be folded, unless they are simple unary operations that don't create new constants. Although this shouldn't drop the opaque constant flag. This commit fixes this. Related to <rdar://problem/14774662> llvm-svn: 204737
* clang-cl: make /Gy imply -fdata-sections in addition to -ffunction-sectionsHans Wennborg2014-03-252-0/+8
| | | | llvm-svn: 204736
* [X86] Generate VPSHUFB for in-place v16i16 shufflesAdam Nemet2014-03-252-0/+47
| | | | | | | | | This used to resort to splitting the 256-bit operation into two 128-bit shuffles and then recombining the results. Fixes <rdar://problem/16167303> llvm-svn: 204735
* [X86] Factor out new helper getPSHUFBAdam Nemet2014-03-251-40/+62
| | | | | | | | | | | | | | | | | | | | I found three implementations of this. This splits it out into a new function and uses it from the three places. My plan is to add a fourth use when lowering a vector_shuffle:v16i16. Compared the assembly output of test/CodeGen/X86 before and after. The only change is due to how the first PSHUFB was generated in LowerVECTOR_SHUFFLEv8i16. If the shuffle mask specified undef (i.e. -1), the old implementation would write -1 * 2 and -1 * 2 + 1 (254 and 255) in the control mask. Now we write 0x80. These are of course interchangeable since bit 7 decides if a constant zero is written in the result byte. The other instances of this code use 0x80 consistently. Related to <rdar://problem/16167303> llvm-svn: 204734
* [InstCombine] Don't fold bitcast into store if it would need addrspacecastRichard Osborne2014-03-252-6/+32
| | | | | | | | | | | | | | | | | | Summary: Previously the code didn't check if the before and after types for the store were pointers to different address spaces. This resulted in instcombine using a bitcast to convert between pointers to different address spaces, causing an assertion due to the invalid cast. It is not be appropriate to use addrspacecast this case because it is not guaranteed to be a no-op cast. Instead bail out and do not do the transformation. CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D3117 llvm-svn: 204733
* Reuse earlier variables to make it clear the types involved in the cast.Richard Osborne2014-03-251-3/+3
| | | | | | No functionality change. llvm-svn: 204732
* Add missing slash to make the doxygen output less confusing.Benjamin Kramer2014-03-251-1/+1
| | | | | | PR19187. llvm-svn: 204731
* [analyzer] Don't track retain counts of objects directly accessed through ivars.Jordan Rose2014-03-252-26/+160
| | | | | | | | | | | | | | | | | | | | | A refinement of r198953 to handle cases where an object is accessed both through a property getter and through direct ivar access. An object accessed through a property should always be treated as +0, i.e. not owned by the caller. However, an object accessed through an ivar may be at +0 or at +1, depending on whether the ivar is a strong reference. Outside of ARC, we don't have that information, so we just don't track objects accessed through ivars. With this change, accessing an ivar directly will deliberately override the +0 provided by a getter, but only if the +0 hasn't participated in other retain counting yet. That isn't perfect, but it's already unusual for people to be mixing property access with direct ivar access. (The primary use case for this is in setters, init methods, and -dealloc.) Thanks to Ted for spotting a few mistakes in private review. <rdar://problem/16333368> llvm-svn: 204730
OpenPOWER on IntegriCloud