aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@sifive.com>2023-09-15 18:53:53 -0700
committerCraig Topper <craig.topper@sifive.com>2023-09-18 09:10:19 -0700
commit17a12a27ec1f0e44b4c379cac8fc9536074b4ed4 (patch)
tree8d5036f3d83a2d695c9fcf2d023a6f6576d5d461 /llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
parent14882d6b7440e797d8d60cb1f8207fe332cae033 (diff)
downloadllvm-17a12a27ec1f0e44b4c379cac8fc9536074b4ed4.zip
llvm-17a12a27ec1f0e44b4c379cac8fc9536074b4ed4.tar.gz
llvm-17a12a27ec1f0e44b4c379cac8fc9536074b4ed4.tar.bz2
[RISCV] Add test case to show bad codegen for unaligned i64 store of a large constant.
On the first split we create two i32 trunc stores and a srl to shift the high part down. The srl gets constant folded, but to produce a new i32 constant. But the truncstore for the low store still uses the original constant. This original constant then gets converted to a constant pool before we revisit the stores to further split them. The constant pool prevents further constant folding of the additional srls. After legalization is done, we run DAGCombiner and get some constant folding of srl via computeKnownBits which can peek through the constant pool load. This can create new constants that also need a constant pool.
Diffstat (limited to 'llvm/lib/ProfileData/Coverage/CoverageMapping.cpp')
0 files changed, 0 insertions, 0 deletions