[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