[CVP] Don't try to fold load/store operands to constant (#73338)
commit2b646b598942b87f25fda1713a3c5e211585ca88
authorNikita Popov <npopov@redhat.com>
Mon, 27 Nov 2023 08:17:03 +0000 (27 09:17 +0100)
committerGitHub <noreply@github.com>
Mon, 27 Nov 2023 08:17:03 +0000 (27 09:17 +0100)
tree68ae6936654c5890108c0256fb7af0c57239624e
parent477c0b67a3ab30e74f3563b3f0b9d4d53caba465
[CVP] Don't try to fold load/store operands to constant (#73338)

CVP currently tries to fold load/store pointer operands to constants
using LVI. If there is a dominating condition of the form `icmp eq ptr
%p, @g`, then `%p` will be replaced with `@g`.

LVI is geared towards range-based optimizations, and is *very*
inefficient at handling simple pointer equality conditions. We have
other passes that can handle this optimization in a more efficient way,
such as IPSCCP and GVN.

Removing this optimization gives a geomean 0.4-1.2% compile-time
improvement depending on configuration. At the same time, there
is no impact on codegen.
llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
llvm/test/Transforms/CorrelatedValuePropagation/basic.ll