- Apr 26, 2020
-
-
Nikita Popov authored
Attributes are currently stored as a simple list. Enum attributes additionally use a bitset to allow quickly determining whether an attribute is set. String attributes on the other hand require a full scan of the list. As functions tend to have a lot of string attributes (at least when clang is used), this is a noticeable performance issue. This patch adds an additional name => attribute map to the AttributeSetNode, which allows querying string attributes quickly. This results in a 3% reduction in instructions retired on CTMark. Changes to memory usage seem to be in the noise (attribute sets are uniqued, and we don't tend to have more than a few dozen or hundred unique attribute sets, so adding an extra map does not have a noticeable cost.) Differential Revision: https://reviews.llvm.org/D78859
-
Craig Topper authored
Previously we were hitting the scalarization case in the default implementation.
-
Craig Topper authored
With avx512 vXi1 is legal and uses k-registers with many custom cases for extending.
-
Craig Topper authored
We aren't properly costing extends from k-registers. I also added command lines without avx512bw to be able to show all the different extending strategies we have.
-
Fangrui Song authored
-
Kang Zhang authored
-
Nathan Ridge authored
Reviewers: sammccall Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D76451
-
Chris Lattner authored
Summary: Specifically make some simple refactorings to get PointerUnion.h and Twine.h out of the public includes. While here, trim out a lot of transitive includes as well. Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78870
-
Fangrui Song authored
-
Kang Zhang authored
-
Fangrui Song authored
X86GenDAGISel.inc: 22597697 bytes -> 20874981 bytes
-
Fangrui Song authored
6330853 bytes -> 5207842 bytes
-
Ayke van Laethem authored
These tests were placed in the CodeGen directory while they really should have been placed in the Preprocessor directory. Differential Revision: https://reviews.llvm.org/D78163
-
Fangrui Song authored
-
Fangrui Song authored
-
Ayke van Laethem authored
This is the first patch in a series to add support for the AVR target. This patch includes changes to make compiler-rt more target independent by not relying on the width of an int or long. Differential Revision: https://reviews.llvm.org/D78662
-
Craig Topper authored
-
Jon Roelofs authored
-
Chris Lattner authored
Summary: This introduces a new SourceMgr::FindLocForLineAndColumn method that uses the OffsetCache in SourceMgr::SrcBuffer to do do a constant time lookup for the line number (once the cache is populated). Use this method in MLIR's SourceMgrDiagnosticHandler::convertLocToSMLoc, replacing the O(n) scanning logic. This resolves a long standing TODO in MLIR, and makes one of my usecases go dramatically faster (which is currently producing many diagnostics in a 40MB SourceBuffer). NFC, this is just a performance speedup and cleanup. Reviewers: rriddle!, ftynse! Subscribers: hiraditya, mehdi_amini, rriddle, jpienaar, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, liufengdb, Joonsoo, grosul1, frgossen, Kayjukh, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78868
-
Benjamin Kramer authored
LinalgOps.cpp:232:71: error: specialization of 'template<class GenericOpType> static mlir::LogicalResult {anonymous}::BlockArgsVerifier<GenericOpType>::verify(GenericOpType, mlir::Block&)' in different namespace [-fpermissive] -
Alex Brachet authored
`argv0` was never being modified. No changes made except to the type. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D78840
-
Craig Topper authored
-
Simon Pilgrim authored
Fixed implicit MachineFrameInfo.h dependency in X86SelectionDAGInfo.cpp
-
Alexandre Ganea authored
The test ThreadPoolTest.AllThreads_UseAllRessources occasionally fails on the bots: http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/32015/steps/test-check-all/logs/FAIL%3A%20LLVM-Unit%3A%3AThreadPoolTest.AllThreads_UseAllRessources This is because jobs were executed too fast on the first CPU socket, and never manage to reach the second CPU socket. Differential Revision: https://reviews.llvm.org/D78832
-
Sergei Trofimovich authored
Summary: Missing error mangling is noticed in https://bugs.llvm.org/show_bug.cgi?id=45636 where inconsistent profiling input caused llvm/lld to crash as: ``` Program aborted due to an unhandled Error: linking module flags 'ProfileSummary': IDs have conflicting values in 'Mutex_posix.o' and 'nsBrowserApp.o' ``` The change does not change the fact that LLVM crashes but changes error output to say what was incorrect: ``` LLVM ERROR: Function Import: link error: linking module flags 'ProfileSummary': IDs have conflicting values in 'Mutex_posix.o' and 'nsBrowserApp.o' ``` Actual crash has yet to be fixed. Reviewers: lattner Reviewed By: lattner Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78676
-
peter klausler authored
Summary: Updates recent work on DATA statement semantic checking in flang/lib/Semantics/check-data.{h,cpp} to use the compiler's internal representation for typed expressions rather than working on the raw parse tree. Saves the analyzed expressions for DATA statement values as parse tree decorations because they'll soon be needed in lowering. Corrects wording of some error messages. Fixes a bug in constant expression checking: structure constructors are not constant expressions if they set an allocatable component to anything other than NULL. Includes infrastructure changes to make this work, some renaming to reflect the fact that the implied DO loop indices tracked by expression analysis are not (just) from array constructors, remove some dead code, and improve some comments. Reviewers: tskeith, sscalpone, jdoerfert, DavidTruby, anchu-rajendran, schweitz Reviewed By: tskeith, anchu-rajendran, schweitz Subscribers: llvm-commits, flang-commits Tags: #flang, #llvm Differential Revision: https://reviews.llvm.org/D78834 -
Sam Clegg authored
These stub new function were not being added to the symbol table which in turn meant that we were crashing when trying to output relocations against them. Differential Revision: https://reviews.llvm.org/D78779
-
Cristian Adam authored
Differential Revision: https://reviews.llvm.org/D75068
-
Sergey Dmitriev authored
[Attributor] Do not set 'returned' attribute for arguments that cannot be bitcasted to function result Reviewers: jdoerfert, sstefan1, uenoku Reviewed By: jdoerfert Subscribers: hiraditya, uenoku, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78828
-
- Apr 25, 2020
-
-
Alexander Belyaev authored
`addArgument()` is not undoable and should not be used in ConversionPattern, therefore replacing `splitBlock()` with `createBlock()`, that creates a block with specified args. Differential Revision: https://reviews.llvm.org/D78731
-
Sanjay Patel authored
This is another enhancement to D77895/D78362 to avoid a round-trip from XMM->GPR->XMM. This time we handle the case of starting/ending with different FP types but always with signed i32 as the intermediate value. I think this covers all of the faux vector optimization possibilities for pre-AVX512. There is at least 1 other transform mentioned in PR36617: https://bugs.llvm.org/show_bug.cgi?id=36617#c19 ...where we fold an 'fpext' into a preceding 'sitofp'. I think we will want to handle that earlier (DAGCombiner or instcombine) because that's a target-independent optimization. Differential Revision: https://reviews.llvm.org/D78758
-
Sanjay Patel authored
(X | MaskC) == C --> (X & ~MaskC) == C ^ MaskC (X | MaskC) != C --> (X & ~MaskC) != C ^ MaskC We have more analyis for 'and' patterns and already lean this way in the existing code, so this should be neutral or better in IR. If this does not do as well in codegen, the problem already exists and we should fix that based on target costs/heuristics. http://volta.cs.utah.edu:8080/z/oP3ecL define void @src(i8 %x, i8 %OrC, i8 %C, i1* %p0, i1* %p1) { %or = or i8 %x, %OrC %eq = icmp eq i8 %or, %C store i1 %eq, i1* %p0 %ne = icmp ne i8 %or, %C store i1 %ne, i1* %p1 ret void } define void @tgt(i8 %x, i8 %OrC, i8 %C, i1* %p0, i1* %p1) { %NotOrC = xor i8 %OrC, -1 %a = and i8 %x, %NotOrC %NewC = xor i8 %C, %OrC %eq = icmp eq i8 %a, %NewC store i1 %eq, i1* %p0 %ne = icmp ne i8 %a, %NewC store i1 %ne, i1* %p1 ret void }
-
Florian Hahn authored
Using the existing NumFastStores statistic can be misleading when comparing the impact of DSE patches. For example, consider the case where a store gets removed from a function before it is inlined into another function. A less powerful DSE might only remove the store from functions it has been inlined into, which will result in more stores being removed, but no difference in the actual number of stores after DSE. The new stat provides the absolute number of stores surviving after DSE. Reviewers: dmgreen, bryant, asbirlea, jfb Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D78830
-
Sanjay Patel authored
-
Juneyoung Lee authored
Summary: This patch helps isGuaranteedNotToBeUndefOrPoison look into more constants and instructions (bitcast/alloca/gep/fcmp). To deal with bitcast, Depth is added to isGuaranteedNotToBeUndefOrPoison. This patch is splitted from https://reviews.llvm.org/D75808. Checked with Alive2 Reviewers: reames, jdoerfert Reviewed By: jdoerfert Subscribers: sanwou01, spatel, llvm-commits, hiraditya Tags: #llvm Differential Revision: https://reviews.llvm.org/D76010
-
Florian Hahn authored
Currently an unknown/undef value is marked as overdefined when merged with an empty range. An empty range can occur in unreachable/dead code. When merging the new unknown state (= no value known yet) with an empty range, there still isn't any information about the value yet and we can stay in unknown. This gives a few nice improvements on the number of instructions removed by IPSCCP: Same hash: 170 (filtered out) Remaining: 67 Metric: sccp.IPNumInstRemoved Program base patch diff test-suite...rks/FreeBench/mason/mason.test 3.00 6.00 100.0% test-suite...nchmarks/McCat/18-imp/imp.test 3.00 5.00 66.7% test-suite...C/CFP2000/179.art/179.art.test 2.00 3.00 50.0% test-suite...ijndael/security-rijndael.test 2.00 3.00 50.0% test-suite...ks/Prolangs-C/agrep/agrep.test 40.00 58.00 45.0% test-suite...ce/Applications/Burg/burg.test 26.00 37.00 42.3% test-suite...cCat/03-testtrie/testtrie.test 3.00 4.00 33.3% test-suite...Source/Benchmarks/sim/sim.test 29.00 36.00 24.1% test-suite.../Applications/spiff/spiff.test 9.00 11.00 22.2% test-suite...s/FreeBench/neural/neural.test 5.00 6.00 20.0% test-suite...pplications/treecc/treecc.test 66.00 79.00 19.7% test-suite...langs-C/football/football.test 85.00 101.00 18.8% test-suite...ce/Benchmarks/PAQ8p/paq8p.test 90.00 105.00 16.7% test-suite...oxyApps-C++/miniFE/miniFE.test 37.00 43.00 16.2% test-suite...rks/FreeBench/pifft/pifft.test 26.00 30.00 15.4% test-suite...lications/sqlite3/sqlite3.test 481.00 548.00 13.9% test-suite...marks/7zip/7zip-benchmark.test 4875.00 5522.00 13.3% test-suite.../CINT2000/176.gcc/176.gcc.test 1117.00 1197.00 7.2% test-suite...0.perlbench/400.perlbench.test 1618.00 1732.00 7.0% Reviewers: efriedma, nikic, davide Reviewed By: efriedma Differential Revision: https://reviews.llvm.org/D78667
-
Igor Kudrin authored
When discarding local symbols with --discard-all or --discard-locals, the ones which are used in relocations should be preserved. LLD used the simplest approach and just ignored those switches when -r or --emit-relocs was specified. The patch implements handling the --discard-* switches for the cases when relocations are kept by identifying used local symbols and allowing removing only unused ones. This makes the behavior of LLD compatible with GNU linkers. Differential Revision: https://reviews.llvm.org/D77807
-
Igor Kudrin authored
The sizes of offsets in the `.debug_str_offsets.dwo` section depend on the format of compilation or type units referencing them: 4 bytes for DWARF32 units and 8 bytes for DWARF64 ones. The fix uses parsed units to determine the actual size of offsets in the corresponding part of the `.debug_str_offsets.dwo` section. Differential Revision: https://reviews.llvm.org/D78555
-
Igor Kudrin authored
The library can parse DWARFv5 unit index sections of DWP files, but llvm-dwp is not ready to process them. Refuse such input files for now. Differential Revision: https://reviews.llvm.org/D77143
-
Simon Pilgrim authored
-