HomePhabricator

[MergeICmps] Fix missing split.

Authored by courbet on Dec 1 2020, 12:44 AM.

Description

[MergeICmps] Fix missing split.

We were not correctly splitting a blocks for chains of length 1.

Before that change, additional instructions for blocks in chains of
length 1 were not split off from the block before removing (this was
done correctly for chains of longer size).
If this first block contained an instruction referenced elsewhere,
deleting the block, would result in invalidation of the produced value.

This caused a miscompile which motivated D92297 (before D17993,
nonnull and dereferenceable attributed were not added so MergeICmps were
not triggered.) The new test gep-references-bb.ll demonstrate the issue.

The regression was introduced in
rG0efadbbcdeb82f5c14f38fbc2826107063ca48b2.

This supersedes D92364.

Test case by MaskRay (Fangrui Song).

Differential Revision: https://reviews.llvm.org/D92375

Details

Committed
courbetDec 1 2020, 7:50 AM
Differential Revision
D92375: [MergeICmps] Fix missing split.
Parents
rGcd5897d55908: [HIP] Fix static-lib test CHECK bug
Branches
Unknown
Tags
Unknown