summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [x86] preserve test intent by removing undefSanjay Patel2018-05-171-26/+20
| | | | | | | | | | | | We need to clean up the DAG floating-point undef logic. This process is similar to how we handled integer undef logic in https://reviews.llvm.org/D43141. And as we did there, I'm trying to reduce the patch by changing tests that would probably become meaningless once we correct FP undef folding. llvm-svn: 332648
* [builtins][macos] bump up the the macOS version min in os_version_check testsAlex Lorenz2018-05-172-2/+2
| | | | | | This ensures that the tests link with the latest OS. llvm-svn: 332647
* Add missing test case for r332639Reid Kleckner2018-05-171-0/+17
| | | | llvm-svn: 332646
* [llvm-pdbutil] Dump struct/class/union sizes in the minimal dump formatReid Kleckner2018-05-171-4/+6
| | | | llvm-svn: 332645
* Improve error message for -thinlto-object-suffix-replace and simplify code.Rui Ueyama2018-05-175-50/+52
| | | | llvm-svn: 332643
* [Debugify] Print the output to stderrAnastasis Grammenos2018-05-174-16/+23
| | | | | | | | | | Currently debugify prints it's output to stdout, with this patch all the output generated goes to stderr. This change lets us use debugify without taking away the ability to pipe the output to other llvm tools. llvm-svn: 332642
* [RISCV] Separate base from offset in lowerGlobalAddressSameer AbuAsal2018-05-179-85/+191
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: When lowering global address, lower the base as a TargetGlobal first then create an SDNode for the offset separately and chain it to the address calculation This optimization will create a DAG where the base address of a global access will be reused between different access. The offset can later be folded into the immediate part of the memory access instruction. With this optimization we generate: lui a0, %hi(s) addi a0, a0, %lo(s) ; shared base address. addi a1, zero, 20 ; 2 instructions per access. sw a1, 44(a0) addi a1, zero, 10 sw a1, 8(a0) addi a1, zero, 30 sw a1, 80(a0) Instead of: lui a0, %hi(s+44) ; 3 instructions per access. addi a1, zero, 20 sw a1, %lo(s+44)(a0) lui a0, %hi(s+8) addi a1, zero, 10 sw a1, %lo(s+8)(a0) lui a0, %hi(s+80) addi a1, zero, 30 sw a1, %lo(s+80)(a0) Which will save one instruction per access. Reviewers: asb, apazos Reviewed By: asb Subscribers: rbar, johnrusso, simoncook, jordy.potman.lists, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, mgrang, apazos, asb, llvm-commits Differential Revision: https://reviews.llvm.org/D46989 llvm-svn: 332641
* [x86] preserve test intent by removing undefSanjay Patel2018-05-171-8/+7
| | | | | | | | | | | | We need to clean up the DAG floating-point undef logic. This process is similar to how we handled integer undef logic in https://reviews.llvm.org/D43141. And as we did there, I'm trying to reduce the patch by changing tests that would probably become meaningless once we correct FP undef folding. llvm-svn: 332640
* Fix a mangling failure on clang-cl C++17Reid Kleckner2018-05-174-14/+10
| | | | | | | | | | | | | | MethodVFTableLocations in MigrosoftVTableContext contains canonicalized decl. But, it's sometimes asked to lookup for non-canonicalized decl, and that causes assertion failure, and compilation failure. Fixes PR37481. Patch by Taiju Tsuiki! Differential Revision: https://reviews.llvm.org/D46929 llvm-svn: 332639
* [ARM] preserve test intent by removing undefSanjay Patel2018-05-171-20/+20
| | | | | | | | | | | | We need to clean up the DAG floating-point undef logic. This process is similar to how we handled integer undef logic in https://reviews.llvm.org/D43141. And as we did there, I'm trying to reduce the patch by changing tests that would probably become meaningless once we correct FP undef folding. llvm-svn: 332638
* [ARM] preserve test intent by removing undefSanjay Patel2018-05-171-4/+4
| | | | | | | | | | | | | | | | We need to clean up the DAG floating-point undef logic. This process is similar to how we handled integer undef logic in https://reviews.llvm.org/D43141. And as we did there, I'm trying to reduce the patch by changing tests that would probably become meaningless once we correct FP undef folding. Follow-up to: https://reviews.llvm.org/rL332538 ...because that change wasn't enough. llvm-svn: 332637
* [AArch64] preserve test intent by removing undefSanjay Patel2018-05-171-3/+3
| | | | | | | | | | | | | | | | We need to clean up the DAG floating-point undef logic. This process is similar to how we handled integer undef logic in D43141. And as we did there, I'm trying to reduce the patch by changing tests that would probably become meaningless once we correct FP undef folding. Follow-up to: https://reviews.llvm.org/rL332534 ...because that change wasn't enough. llvm-svn: 332636
* [sanitizer] Don't add --export-dynamic for MyriadWalter Lee2018-05-171-0/+5
| | | | | | | | | | | This is to work around a bug in some versions of gnu ld, where --export-dynamic implies -shared even if -static is explicitly given. Myriad supports static linking only, so --export-dynamic is never needed. Differential Revision: https://reviews.llvm.org/D46452 llvm-svn: 332635
* [RISCV] Implement MC layer support for the tail pseudoinstructionMandeep Singh Grang2018-05-175-3/+73
| | | | | | | | | | | | | | | | Summary: This patch implements MC support for tail psuedo instruction. A follow-up patch implements the codegen support as well as handling of the indirect tail pseudo instruction. Reviewers: asb, apazos Reviewed By: asb Subscribers: rbar, johnrusso, simoncook, jordy.potman.lists, sabuasal, niosHD, kito-cheng, shiva0217, zzheng, edward-jones, llvm-commits Differential Revision: https://reviews.llvm.org/D46221 llvm-svn: 332634
* Fix buildbots after it 332618Greg Clayton2018-05-171-2/+0
| | | | llvm-svn: 332633
* [WebAssembly] MC: Fix typo in commentSam Clegg2018-05-171-1/+1
| | | | llvm-svn: 332632
* [CMake] Support runtimes in distributionsChris Bieneman2018-05-172-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This patch adds a new internal variable LLVM_RUNTIME_DISTRIBUTION_COMPONENTS which specifies distribution components that are part of runtime projects, and thus should be exposed from runtime configuraitons up into the top-level CMake configurations. This is required for allowing runtime components to be included in LLVM_DISTRIBUTION_COMPONENTS because we verify that the build and install targets exist for every component specified for the distribution. Without this patch runtimes and builtins can only be included in distributions in whole, not by component. Reviewers: phosek Reviewed By: phosek Subscribers: mgorny, llvm-commits Differential Revision: https://reviews.llvm.org/D46705 llvm-svn: 332631
* Fix typo in declaring code-block snippetSimon Pilgrim2018-05-171-1/+1
| | | | llvm-svn: 332630
* [lit, lldbsuite] Disable tests that are failing because of pr21765 and pr24489Stella Stamenova2018-05-173-0/+3
| | | | | | | | | | | | | | Summary: These three tests are failing on Windows and looking into the failures, they could be mapped to pr21765 and pr24489 Reviewers: asmith, labath, zturner Reviewed By: zturner Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D47018 llvm-svn: 332629
* [CMake] Make optimizing sanitizer builds optionalChris Bieneman2018-05-172-1/+2
| | | | | | This behavior has been the default for a long time, so the default value is On, however this can make it difficult to debug sanitizer failures, so we should have an option to turn it off. llvm-svn: 332628
* [llvm-mca] Add an example showing how to get Intel assembly syntaxAndrea Di Biagio2018-05-171-0/+6
| | | | | | Patch by Jeff Muizelaar. llvm-svn: 332627
* [X86] Split WriteCMOV + WriteCMOV2 scheduler classesSimon Pilgrim2018-05-1711-71/+36
| | | | | | Handle SNB+ targets which treat CMOVA/CMOVBE specially due to partial EFLAGS handling. llvm-svn: 332626
* AMDGPU/SI: Handle infinite loop for the structurizer to work with CFG with ↵Changpeng Fang2018-05-176-15/+202
| | | | | | | | | | | | | | | | | | | infinite loops. Summary: The current StructurizeCFG pass only works for CFG with one exit. AMDGPUUnifyDivergentExitNodes combines multiple "return" blocks and/or "unreachable" blocks to one exit block for the Structurizer to work. However, infinite loop is another kind of special "exit", and if we don't handle it, the case of multiple exits will prevent the structurizer from working. In this work, for each infinite loop, we add a dummy edge to the "return" block, and thus the AMDGPUUnifyDivergentExitNodes pass will work with infinite loops. This will make CFG with infinite loops be structurized. Reviewer: nhaehnle Differential Revision: https://reviews.llvm.org/D46340 llvm-svn: 332625
* [mips] Add support for Global INValidate ASEPetar Jovanovic2018-05-1726-3/+316
| | | | | | | | | | | | | | | | | | This includes Instructions: ginvi, ginvt, Assembler directives: .set ginv, .set noginv, .module ginv, .module noginv Attribute: ginv .MIPS.abiflags: GINV (0x20000) Patch by Vladimir Stefanovic. Differential Revision: https://reviews.llvm.org/D46268 llvm-svn: 332624
* [InstCombine] Propagate the nsw/nuw flags from the add in the 'shifty' abs ↵Craig Topper2018-05-172-1/+33
| | | | | | | | | | | | pattern to the sub in the select version. According to alive this is valid. I'm hoping to use this to make an assumption that the sign bit is zero after this sequence. The only way it wouldn't be is if the input was INT__MIN, but by preserving the flags we can make doing this to INT_MIN UB. The nuw flags is weird because it creates such a contradiction that the original number would have to be positive meaning we could remove the select entirely, but we don't get that far. Differential Revision: https://reviews.llvm.org/D46988 llvm-svn: 332623
* [llvm-mca][X86] Add CMOV test filesSimon Pilgrim2018-05-179-0/+2928
| | | | llvm-svn: 332622
* [CUDA] Allow "extern __shared__ Foo foo[]" within anon. namespaces.Justin Lebar2018-05-174-6/+48
| | | | | | | | | | | | | | | Summary: Previously this triggered a -Wundefined-internal warning. But it's not an undefined variable -- any variable of this form is a pointer to the base of GPU core's shared memory. Reviewers: tra Subscribers: sanjoy, rsmith Differential Revision: https://reviews.llvm.org/D46782 llvm-svn: 332621
* Disable a failing clang-move test on windows.Eric Liu2018-05-171-0/+4
| | | | | | | | | | | This was broken by r332590 but is likely caused by a bug in clang-move. http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/12007 I don't have a windows machine to effectively debug the issue, so I'll investigate further but for now disable the failing test on windows to unbreak build bots. llvm-svn: 332620
* [CUDA] Make std::min/max work when compiling in C++14 mode with a C++11 stdlib.Justin Lebar2018-05-171-18/+29
| | | | | | | | | | Reviewers: rsmith Subscribers: sanjoy, cfe-commits, tra Differential Revision: https://reviews.llvm.org/D46993 llvm-svn: 332619
* FileSpec objects that resolve to "." should have "." in m_filename and ↵Greg Clayton2018-05-172-4/+14
| | | | | | | | | | | | m_directory empty. After switching to LLVM normalization, if we init FileSpec with "." we would end up with m_directory being NULL and m_filename being "". This patch fixes this by allowing the path to be normalized and if it normalized to nothing, set it to m_filename. Differential Revision: https://reviews.llvm.org/D46783 llvm-svn: 332618
* [RISCV] Set isReMaterializable on ADDI and LUI instructionsAlex Bradbury2018-05-174-39/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | The isReMaterlizable flag is somewhat confusing, unlike most other instruction flags it is currently interpreted as a hint (mightBeRematerializable would be a better name). While LUI is always rematerialisable, for an instruction like ADDI it depends on its operands. TargetInstrInfo::isTriviallyReMaterializable will call TargetInstrInfo::isReallyTriviallyReMaterializable, which in turn calls TargetInstrInfo::isReallyTriviallyReMaterializableGeneric. We rely on the logic in the latter to pick out instances of ADDI that really are rematerializable. The isReMaterializable flag does make a difference on a variety of test programs. The recently committed remat.ll test case demonstrates how stack usage is reduce and a unnecessary lw/sw can be removed. Stack usage in the Proc0 function in dhrystone reduces from 192 bytes to 112 bytes. For the sake of completeness, this patch also implements RISCVRegisterInfo::isConstantPhysReg. Although this is called from a number of places, it doesn't seem to result in different codegen for any programs I've thrown at it. However, it is called in the rematerialisation codepath and it seems sensible to implement something correct here. Differential Revision: https://reviews.llvm.org/D46182 llvm-svn: 332617
* [X86][BtVer2] ADC/SBB take 2cy on an ALU pipe, not 1cy like ADD/SUBSimon Pilgrim2018-05-174-126/+126
| | | | llvm-svn: 332616
* [llvm-mca] Hide unrelated flags from the -help output.Andrea Di Biagio2018-05-171-23/+35
| | | | llvm-svn: 332615
* Fix __uuidof handling on non-type template parameter in C++17Nico Weber2018-05-172-1/+14
| | | | | | | | | | | | | | | Clang used to pass the base lvalue of a non-type template parameter to the template instantiation phase when the base part is __uuidof and it's running in C++17 mode. However, that drops its LValuePath, and unintentionally transforms &__uuidof(...) to __uuidof(...). This CL fixes that by passing whole expr. Fixes PR24986. https://reviews.llvm.org/D46820?id=146557 Patch from Taiju Tsuiki <tzik@chromium.org>! llvm-svn: 332614
* [COFF] Add /Brepro and /TIMESTAMP options.Zachary Turner2018-05-175-3/+44
| | | | | | | | | | | | | | | | | | | | Previously we would always write a hash of the binary into the PE file, for reproducible builds. This breaks AppCompat, which is a feature of Windows that relies on the timestamp in the PE header being set to a real value (or at the very least, a value that satisfies certain properties). To address this, we put the old behavior of writing the hash behind the /Brepro flag, which mimics MSVC linker behavior. We also match MSVC default behavior, which is to write an actual timestamp to the PE header. Finally, we add the /TIMESTAMP option (an lld extension) so that the user can specify the exact value to be used in case he/she manually constructs a value which is both reproducible and satisfies AppCompat. Differential Revision: https://reviews.llvm.org/D46966 llvm-svn: 332613
* Second attempt to fix clang-move tests broken by r332590 on windowsEric Liu2018-05-171-0/+2
| | | | | | | | | | http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/12010 Add back a path conversion removed in a previous attempt. I removed it because it didn't seem necessary. Added it back to see if this would fix the bot. llvm-svn: 332612
* [llvm-exegesis] Remove redudant explicit template instantiations.Clement Courbet2018-05-171-5/+0
| | | | llvm-svn: 332611
* In thin and full LTO + CFI, direct function calls may go through jump tableDmitry Mikulin2018-05-1714-56/+253
| | | | | | | | | entries to reach the target. Since these calls don't require type checks, we can short-circuit them to their real targets. Differential Revision: https://reviews.llvm.org/D46326 llvm-svn: 332610
* [clang-tidy] Add a flag to enable alpha checkersAlexander Kornienko2018-05-176-16/+56
| | | | | | | | | | | | | | | | Summary: The alpha checkers can already be enabled using the clang driver, this allows them to be enabled using the clang-tidy as well. This can make it easier to test the alpha checkers with projects which already support the compile_commands.json. It will also allow more people to give feedback and patches about the alpha checkers since they can run it as part of clang tidy checks. Reviewers: aaron.ballman, hokein, ilya-biryukov, alexfh, lebedev.ri, xbolva00 Reviewed By: aaron.ballman, alexfh, lebedev.ri, xbolva00 Subscribers: xbolva00, NoQ, dcoughlin, lebedev.ri, xazax.hun, cfe-commits Patch by Paul Fultz II! Differential Revision: https://reviews.llvm.org/D46159 llvm-svn: 332609
* [llvm-exegesis] Write out inconsistencies to a file.Clement Courbet2018-05-173-21/+47
| | | | | | | | | | Reviewers: gchatelet Subscribers: tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D47013 llvm-svn: 332608
* [Hexagon] Use addAliasForDirective for data directivesAlex Bradbury2018-05-173-39/+49
| | | | | | | | | | | Data directives such as .word, .half, .hword are currently parsed using HexagonAsmParser::ParseDirectiveValue which effectively duplicates logic from AsmParser::parseDirectiveValue. This patch deletes that duplicated logic in favour of using addAliasForDirective. Differential Revision: https://reviews.llvm.org/D46999 llvm-svn: 332607
* [AArch64] Correct inline assembly test case for S modifier [NFC]Peter Smith2018-05-171-3/+3
| | | | | | | | | | | | | | | The existing test for the AArch64 inline assembly constraint S uses the A and L modifiers. These modifiers were implemented in the original AArch64 backend but were not carried forward to the merged backend. The A is associated with ADRP and does nothing, the L is associated with :lo12: . Given that A and L are not supported by GCC and not supported by the new implementation of constraint S in LLVM (see D46745) I've altered the test to put :lo12: directly in the string so that A and L are not needed. Differential Revision: https://reviews.llvm.org/D46932 llvm-svn: 332606
* [X86] Split WriteADC/WriteADCRMW scheduler classesSimon Pilgrim2018-05-1712-146/+80
| | | | | | For integer ALU instructions taking eflags as an input (ADC/SBB/ADCX/ADOX) llvm-svn: 332605
* [llvm-exegesis] Disable failing ARM assembler tests.Clement Courbet2018-05-171-2/+2
| | | | llvm-svn: 332604
* Attempt to fix clang-move tests broken by r332590 on windowsEric Liu2018-05-171-8/+10
| | | | | | http://lab.llvm.org:8011/builders/clang-x86-windows-msvc2015/builds/12007 llvm-svn: 332603
* [llvm-mca] add flag -all-views and flag -all-stats.Andrea Di Biagio2018-05-176-0/+490
| | | | | | | Flag -all-views enables all the views. Flag -all-stats enables all the views that print hardware statistics. llvm-svn: 332602
* [llvm-exegesis] Analysis: detect clustering inconsistencies.Clement Courbet2018-05-173-25/+100
| | | | | | | | | | | | | | | | | Summary: Warn on instructions that should have the same performance characteristics according to the sched model but actually differ in their benchmarks. Next step: Make the display nicer to browse, I was thinking maybe html. Reviewers: gchatelet Subscribers: tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D46945 llvm-svn: 332601
* [llvm-exegesis] Disable the tests failing on buildbots while we investigate.Clement Courbet2018-05-171-4/+4
| | | | llvm-svn: 332600
* [SystemZ] Commenting (NFC)Jonas Paulsson2018-05-172-6/+10
| | | | | | | Some minor commenting in scheduler files. Review: Ulrich Weigand llvm-svn: 332599
* Use dotted format of version tuple for availability diagnosticsJan Korous2018-05-177-42/+41
| | | | | | | | | | | | E. g. use "10.11" instead of "10_11". We are maintaining backward compatibility by parsing underscore-delimited version tuples but no longer keep track of the separator and using dot format for output. Differential Revision: https://reviews.llvm.org/D46747 rdar://problem/39845032 llvm-svn: 332598
OpenPOWER on IntegriCloud