SuccessChanges

Summary

  1. [SCEVExpander] Support expanding nonintegral pointers with constant base. (details)
Commit 1d8f2e52925b3a3ab52726c745169f273239329d by flo
[SCEVExpander] Support expanding nonintegral pointers with constant base.

Currently SCEVExpander creates inttoptr for non-integral pointers if the
base is a null constant for example. This results in invalid IR.

This patch changes InsertNoopCastOfTo to emit a GEP & bitcast to convert
to a non-integral pointer. First, a GEP of i8* null is generated and the
integral value is used as index. The GEP is then bitcasted to the target
type.

This was exposed by D71539.

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D87827
The file was modifiedllvm/unittests/Transforms/Utils/ScalarEvolutionExpanderTest.cpp (diff)
The file was modifiedllvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp (diff)