Skip to content
  • Dan Gohman's avatar
    Teach SCEVExpander to expand arithmetic involving pointers into GEP · 2649491f
    Dan Gohman authored
    instructions. It attempts to create high-level multi-operand GEPs,
    though in cases where this isn't possible it falls back to casting
    the pointer to i8* and emitting a GEP with that. Using GEP instructions
    instead of ptrtoint+arithmetic+inttoptr helps pointer analyses that
    don't use ScalarEvolution, such as BasicAliasAnalysis.
    
    Also, make the AddrModeMatcher more aggressive in handling GEPs.
    Previously it assumed that operand 0 of a GEP would require a register
    in almost all cases. It now does extra checking and can do more
    matching if operand 0 of the GEP is foldable. This fixes a problem
    that was exposed by SCEVExpander using GEPs.
    
    llvm-svn: 72093
    2649491f
Loading