Skip to content

[DivRemPairs] Broken handling of RAUW #42168

@LebedevRI

Description

@LebedevRI
Bugzilla Link 42823
Resolution FIXED
Resolved on Aug 01, 2019 02:11
Version trunk
OS Linux
Blocks #41819
CC @topperc,@zmodem,@LebedevRI,@RKSimon,@rotateright

Extended Description

https://reviews.llvm.org/D65298 added recomposition of expanded form of rem into rem instruction, and that broke test-suite.
The bug is due to the fact that that pass does RAUW, but does nothing
about it's internal maps, the Values in them don't get updated.

That variation of a bug can be exposed even without that patch with this IR:

target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "aarch64-unknown-linux-gnu"

define i32 @​d(i32 %X, i32 %Y, i32 %Z) {
bb:
%t0 = mul nsw i32 %Z, %Y
%t1 = sdiv i32 %X, %t0
%t2 = mul nsw i32 %t0, %t1
%t3.recomposed = srem i32 %X, %t0
%t4 = sdiv i32 %t3.recomposed, %Y
%t5 = mul nsw i32 %t4, %Y
%t6.recomposed = srem i32 %t3.recomposed, %Y
ret i32 %t6.recomposed
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzilla

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions