summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* 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
* [llvm-exegesis][NFC] Remove dead function.Clement Courbet2018-05-171-5/+0
| | | | llvm-svn: 332597
* [DWARF] Have HashedNameToDIE store a DataExtractor by valuePavel Labath2018-05-171-2/+2
| | | | | | | | | | | | | | | | | Summary: The DataExtractors are cheap to copy so there is no reason to store them by reference. Also, in my upcoming indexing refactor I am planning to remove the apple tables data extractor members from the SymbolFileDWARF class, so there will not be a DataExtractor with a suitable lifetime to refer to. Reviewers: clayborg, JDevlieghere Subscribers: aprantl, lldb-commits Differential Revision: https://reviews.llvm.org/D46888 llvm-svn: 332596
* [llvm-mca][X86] Add ADX test filesSimon Pilgrim2018-05-174-0/+234
| | | | llvm-svn: 332595
* Fix r332592 : X86 tests should use the X86 target, not the native targets.Clement Courbet2018-05-171-5/+14
| | | | llvm-svn: 332594
* CodeGen: Fix invalid bitcast for lifetime.start/endYaxun Liu2018-05-176-34/+103
| | | | | | | | | | | | | | lifetime.start/end expects pointer argument in alloca address space. However in C++ a temporary variable is in default address space. This patch changes API CreateMemTemp and CreateTempAlloca to get the original alloca instruction and pass it lifetime.start/end. It only affects targets with non-zero alloca address space. Differential Revision: https://reviews.llvm.org/D45900 llvm-svn: 332593
* reland r332579: [llvm-exegesis] Update to cover latency through another opcode.Clement Courbet2018-05-1733-1699/+1479
| | | | | | | | | | | | | | Restructuring the code to measure latency and uops. The end goal is to have this program spawn another process to deal with SIGILL and other malformed programs. It is not yet the case in this redesign, it is still the main program that runs the code (and may crash). It now uses BitVector instead of Graph for performance reasons. https://reviews.llvm.org/D46821 (with fixed ARM tests) Authored by Guillaume Chatelet llvm-svn: 332592
* [X86][SNB] Minor scheduler cleanupSimon Pilgrim2018-05-171-7/+3
| | | | | | Merge 2 instregex and explain the VMOVDQArr/MOVDQArr difference llvm-svn: 332591
* Add vfs::FileSystem::getRealPathEric Liu2018-05-173-16/+21
| | | | | | | | | | | | | | Summary: And change `FileManager::getCanonicalName` to use getRealPath. Reviewers: bkramer Reviewed By: bkramer Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D46942 llvm-svn: 332590
* [ELF] - Do not crash when do --gc-sections for non-allocatable metadata ↵George Rimar2018-05-172-4/+44
| | | | | | | | | | | | | | | | sections. Currently, LLD marks all non-allocatable sections except SHF_REL[A] as Live when doing GC. This can be a reason of the crash when SHF_LINK_ORDER sections are involved, because their parents can be dead. We should do GC for them correctly. The patch implements it. Differential revision: https://reviews.llvm.org/D46880 llvm-svn: 332589
* [ASTImporter] Fix missing implict CXXRecordDeclGabor Marton2018-05-172-2/+2
| | | | | | | | | | | | | | Summary: Implicit CXXRecordDecl is not added to its DeclContext during import, but in the original AST it is. This patch fixes this. Reviewers: xazax.hun, a.sidorin, szepet Subscribers: rnkovacs, dkrupp, cfe-commits Differential Revision: https://reviews.llvm.org/D46958 llvm-svn: 332588
* [libclang] Allow skipping function bodies in preamble onlyIvan Donchevskii2018-05-177-10/+59
| | | | | | | | | | | | | | | | | | | Second attempt. Fix line endings and warning. As an addition to CXTranslationUnit_SkipFunctionBodies, provide the new option CXTranslationUnit_LimitSkipFunctionBodiesToPreamble, which constraints the skipping of functions bodies to the preamble only. Function bodies in the main file are not affected if this option is set. Skipping function bodies only in the preamble is what clangd already does and the introduced flag implements it for libclang clients. Patch by Nikolai Kosjar. Differential Revision: https://reviews.llvm.org/D45815 llvm-svn: 332587
* [Frontend] Avoid running plugins during code completion parseIvan Donchevskii2018-05-172-0/+10
| | | | | | | | | | | | | | | | | Second attempt. Proper line endings. The parsing that is done for code completion is a special case that will discard any generated diagnostics, so avoid running plugins for this case in the first place to avoid performance penalties due to the plugins. A scenario for this is for example libclang with extra plugins like tidy. Patch by Nikolai Kosjar Differential Revision: https://reviews.llvm.org/D46050 llvm-svn: 332586
* Revert https://reviews.llvm.org/D46050 and https://reviews.llvm.org/D45815Ivan Donchevskii2018-05-179-164/+105
| | | | | | | Windows line endings. Requires proper resubmission. llvm-svn: 332585
* [AArch64][SVE] Asm: Support for structured ST2, ST3 and ST4 (scalar+scalar) ↵Sander de Smalen2018-05-1726-1/+515
| | | | | | | | | | | | store instructions. Reviewers: rengolin, fhahn, samparker, SjoerdMeijer, javed.absar Reviewed By: SjoerdMeijer Differential Revision: https://reviews.llvm.org/D46680 llvm-svn: 332584
* Require DominatorTree when requiring/preserving LoopInfo in the old pass managerMikael Holmen2018-05-174-0/+59
| | | | | | | | | | | | | | | | | | | | | | | | Summary: Require DominatorTree when requiring/preserving LoopInfo in the old pass manager BreakCriticalEdges tries to keep LoopInfo and DominatorTree updated if they exist. However, since commit r321653 and r321805, to update LoopInfo we must have a DominatorTree, or we will hit an assert. To fix this we now make a couple of passes that only required/preserved LoopInfo also require DominatorTree. This solves PR37334. Reviewers: eli.friedman, efriedma Reviewed By: efriedma Subscribers: efriedma, llvm-commits Differential Revision: https://reviews.llvm.org/D46829 llvm-svn: 332583
* [clang-format] Fix putting ObjC message arguments in one line for multiline ↵Jacek Olesiak2018-05-172-1/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | receiver Summary: Currently BreakBeforeParameter is set to true everytime message receiver spans multiple lines, e.g.: ``` [[object block:^{ return 42; }] aa:42 bb:42]; ``` will be formatted: ``` [[object block:^{ return 42; }] aa:42 bb:42]; ``` even though arguments could fit into one line. This change fixes this behavior. Test Plan: make -j12 FormatTests && tools/clang/unittests/Format/FormatTests Reviewers: benhamilton, djasper Reviewed By: benhamilton Subscribers: klimek, cfe-commits Differential Revision: https://reviews.llvm.org/D46879 llvm-svn: 332582
* [Analysis] Only use _unlocked stdio functions on linuxMartin Storsjo2018-05-172-1/+25
| | | | | | | | | | | | | | | | The existing comment said that the functions were available only on GNU/Linux (and on certain Android versions), but only checked T.isGNUEnvironment() which also is true on MinGW (for arch-windows-gnu triplets), which doesn't have such functions. Existing checks in the initialize function in TargetLibraryInfo.cpp also use only T.isOSLinux() to check for glibc features. This fixes use of stdio on MinGW. Differential Revision: https://reviews.llvm.org/D47002 llvm-svn: 332581
* Revert r332579 "[llvm-exegesis] Update to cover latency through another opcode."Clement Courbet2018-05-1728-1328/+1526
| | | | | | The revision failed to update the ARM tests. llvm-svn: 332580
* [llvm-exegesis] Update to cover latency through another opcode.Clement Courbet2018-05-1728-1526/+1328
| | | | | | | | | | | | Restructuring the code to measure latency and uops. The end goal is to have this program spawn another process to deal with SIGILL and other malformed programs. It is not yet the case in this redesign, it is still the main program that runs the code (and may crash). It now uses BitVector instead of Graph for performance reasons. https://reviews.llvm.org/D46821 Authored by Guillaume Chatelet llvm-svn: 332579
* [libclang] Allow skipping function bodies in preamble onlyIvan Donchevskii2018-05-177-99/+148
| | | | | | | | | | | | | | | | | As an addition to CXTranslationUnit_SkipFunctionBodies, provide the new option CXTranslationUnit_LimitSkipFunctionBodiesToPreamble, which constraints the skipping of functions bodies to the preamble only. Function bodies in the main file are not affected if this option is set. Skipping function bodies only in the preamble is what clangd already does and the introduced flag implements it for libclang clients. Patch by Nikolai Kosjar. Differential Revision: https://reviews.llvm.org/D45815 llvm-svn: 332578
* [SROA] Handle PHI with multiple duplicate predecessorsBjorn Pettersson2018-05-172-1/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: The verifier accepts PHI nodes with multiple entries for the same basic block, as long as the value is the same. As seen in PR37203, SROA did not handle such PHI nodes properly when speculating loads over the PHI, since it inserted multiple loads in the predecessor block and changed the PHI into having multiple entries for the same basic block, but with different values. This patch teaches SROA to reuse the same speculated load for each PHI duplicate entry in such situations. Resolves: https://bugs.llvm.org/show_bug.cgi?id=37203 Reviewers: uabelho, chandlerc, hfinkel, bkramer, efriedma Reviewed By: efriedma Subscribers: dberlin, efriedma, llvm-commits Differential Revision: https://reviews.llvm.org/D46426 llvm-svn: 332577
* Fix rL332458: [AST] Added a helper to extract a user-friendly text of a comment.Clement Courbet2018-05-171-12/+18
| | | | | | Older gcc versions do not support raw string literals within macros. llvm-svn: 332576
* [SROA] pr37267: fix assertion failure in integer wideningHiroshi Inoue2018-05-172-0/+82
| | | | | | | | | | The current integer widening does not support rewriting partial split slices in rewriteIntegerStore (and rewriteIntegerLoad). This patch adds explicit checks for this case in isIntegerWideningViableForSlice. Before r322533, splitting is allowed only for the whole-alloca slice and hence the above case is implicitly rejected by another check `if (DL.getTypeStoreSize(ValueTy) > Size)` because whole-alloca slice is larger than the partition. Differential Revision: https://reviews.llvm.org/D46750 llvm-svn: 332575
* [RISCV] Add support for .half, .hword, .word, .dword directivesAlex Bradbury2018-05-174-0/+61
| | | | | | | | | | These directives are recognised by gas. Support is added through the use of addAliasForDirective. Also match RISC-V gcc in preferring .half and .word for 16-bit and 32-bit data directives. llvm-svn: 332574
* [X86] Add OptForSize to a couple load folding patterns. Remove some bad ↵Craig Topper2018-05-172-10/+7
| | | | | | | | FIXME comments. The FIXME comments were about preventing load folding to avoid a partial xmm update. But these instructions use GPR as input when the load isn't folded. This won't help prevent a partial xmm update. llvm-svn: 332573
* [ELF] PowerOpen ABI -> Power Architecture 64-bit v2 ABI. NFCFangrui Song2018-05-171-5/+6
| | | | | | | | | | Reviewers: sfertile, espindola Subscribers: emaste, arichardson, llvm-commits Differential Revision: https://reviews.llvm.org/D46904 llvm-svn: 332572
* [libcxx] [test] Remove unused local typedef in ↵Billy Robert O'Neal III2018-05-171-1/+0
| | | | | | test/std/numerics/rand/rand.eng/rand.eng.lcong/default.pass.cpp llvm-svn: 332571
* [CMake] Support building shared library for FuchsiaPetr Hosek2018-05-171-0/+1
| | | | | | | | | Fuchsia uses ELF as a file format and LLD as the linker so we can use the same implementation as other ELF based platforms. Differential Revision: https://reviews.llvm.org/D46991 llvm-svn: 332570
* [Thumb2] fix typo in test from r332548Sanjay Patel2018-05-171-1/+1
| | | | llvm-svn: 332569
* Add void casts to suppress nodiscard on linear_congruential_engine.Billy Robert O'Neal III2018-05-172-3/+3
| | | | llvm-svn: 332567
* Mark test with "REQUIRES: shell" since it directly invokes "sh" and was ↵Douglas Yung2018-05-171-0/+2
| | | | | | failing on Windows. llvm-svn: 332563
* [AMDGPU] Move lsr test. NFC.Stanislav Mekhanoshin2018-05-171-0/+0
| | | | llvm-svn: 332562
* [WebAssembly] Fix the opcode number for i64.load16_u.Dan Gohman2018-05-171-1/+1
| | | | | | Fixes PR37488. llvm-svn: 332561
OpenPOWER on IntegriCloud