[llvm-dev] [RFC] Introducing the maxobjsize attribute
Atmn Patel via llvm-dev
llvm-dev at lists.llvm.org
Tue Oct 13 09:35:55 PDT 2020
Hi All,
We've prepared a new attribute `maxobjsize(<n>)` that tracks the maximum
size of the object that a pointer points to. This attribute will be deduced
through the Attributor framework and it is used for aliasing queries. The
`maxobjsize` of an object, and number of `dereferenceable` bytes can be
used as upper and lower bounds on the object size, and if there is no
overlap, we can determine that the underlying objects cannot alias.
Basically, an object that is at most N bytes long is not aliasing one that
is at least N+1 bytes long.
These changes are in:
- D87975 - [IR] Introduce MaxObjSize Attribute
- D87978 - [Attributor] Adds deduction for the MaxObjSize Attribute
- D88353 - [BasicAA] Integrate MaxobjSize for NoAlias
These are the Statistics changes for CTMark *without* the actual deduction (
https://reviews.llvm.org/D88353#2301597):
CHANGED: branch-folder NumHoist
438 -> 431 ( -1.598%)
CHANGED: codegenprepare NumBlocksElim
16093 -> 15885 ( -1.292%)
CHANGED: codegenprepare NumExtsMoved
6373 -> 6439 ( +1.036%)
CHANGED: gvn
IsValueFullyAvailableInBlockNumSpeculationsMax 6746 -> 6858 (
+1.660%)
CHANGED: gvn NumGVNInstr
78434 -> 79330 ( +1.142%)
CHANGED: instcombine NumReassoc
22830 -> 23213 ( +1.678%)
CHANGED: instsimplify NumSimplified
21278 -> 21495 ( +1.020%)
CHANGED: licm NumPromoted
407 -> 497 ( +22.113%)
CHANGED: loop-rotate NumNotRotatedDueToHeaderSize
37 -> 35 ( -5.405%)
CHANGED: loop-simplify NumNested
126 -> 128 ( +1.587%)
CHANGED: machinelicm NumPostRAHoisted
131 -> 134 ( +2.290%)
CHANGED: memory-builtins ObjectVisitorLoad
96077 -> 97496 ( +1.477%)
CHANGED: regalloc NumDCEFoldedLoads
38 -> 37 ( -2.632%)
CHANGED: regalloc NumLaneConflicts
4408 -> 4332 ( -1.724%)
CHANGED: regalloc NumReloadsRemoved
1062 -> 1050 ( -1.130%)
CHANGED: regalloc NumSnippets
1168 -> 1152 ( -1.370%)
CHANGED: regalloc NumSpillsRemoved
672 -> 665 ( -1.042%)
CHANGED: stack-slot-coloring NumDead
14 -> 18 ( +28.571%)
CHANGED: twoaddressinstruction NumConvertedTo3Addr
27054 -> 26695 ( -1.327%)
These are the Statistic Changes in CTMark w/O3 before/after these patches (
https://reviews.llvm.org/D87978#2307622):
CHANGED: codegenprepare NumExtsMoved
3631 -> 3699 ( +1.873%)
CHANGED: dse NumFastOther
192 -> 194 ( +1.042%)
CHANGED: gvn
IsValueFullyAvailableInBlockNumSpeculationsMax 4958 -> 5060 (
+2.057%)
CHANGED: gvn NumGVNInstr
46657 -> 47534 ( +1.880%)
CHANGED: jump-threading NumDupes
91 -> 92 ( +1.099%)
CHANGED: licm NumMovedLoads
6272 -> 6344 ( +1.148%)
CHANGED: licm NumPromoted
381 -> 438 ( +14.961%)
CHANGED: loop-rotate NumNotRotatedDueToHeaderSize
31 -> 29 ( -6.452%)
CHANGED: machinelicm NumPostRAHoisted
88 -> 89 ( +1.136%)
CHANGED: memdep NumCacheNonLocalPtr
1005887 -> 1016671 ( +1.072%)
CHANGED: memory-builtins ObjectVisitorLoad
62048 -> 63473 ( +2.297%)
CHANGED: peephole-opt NumCmps
532 -> 526 ( -1.128%)
CHANGED: regalloc NumDCEFoldedLoads
27 -> 26 ( -3.704%)
CHANGED: regalloc NumLocalSplits
1891 -> 1870 ( -1.111%)
Feedback Welcome.
Atmn and Johannes
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20201013/24d501f7/attachment.html>
More information about the llvm-dev
mailing list