Commit 028db8c4 authored by Johannes Doerfert's avatar Johannes Doerfert
Browse files

[Attributor][FIX] Call right base method in AAValueConstantRangeFloating

We now call the base class method as we should.
parent d0a6b32b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -6153,7 +6153,7 @@ struct AAValueConstantRangeFloating : AAValueConstantRangeImpl {

  /// See AbstractAttribute::initialize(...).
  void initialize(Attributor &A) override {
    AAValueConstantRange::initialize(A);
    AAValueConstantRangeImpl::initialize(A);
    Value &V = getAssociatedValue();

    if (auto *C = dyn_cast<ConstantInt>(&V)) {
+26 −13
Original line number Diff line number Diff line
@@ -455,23 +455,32 @@ return: ; preds = %if.else, %if.then


define dso_local i32 @test4-g2(i32 %u) {
; CHECK-LABEL: define {{[^@]+}}@test4-g2
; CHECK-SAME: (i32 [[U:%.*]])
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[CALL:%.*]] = tail call i32 @test4-f2(i32 [[U]])
; CHECK-NEXT:    ret i32 [[CALL]]
; OLD_PM-LABEL: define {{[^@]+}}@test4-g2
; OLD_PM-SAME: (i32 [[U:%.*]])
; OLD_PM-NEXT:  entry:
; OLD_PM-NEXT:    [[CALL:%.*]] = tail call i32 @test4-f2(i32 [[U]])
; OLD_PM-NEXT:    ret i32 [[CALL]]
;
; FIXME: %call should have range [1, inf]
; NEW_PM-LABEL: define {{[^@]+}}@test4-g2
; NEW_PM-SAME: (i32 [[U:%.*]])
; NEW_PM-NEXT:  entry:
; NEW_PM-NEXT:    [[CALL:%.*]] = tail call i32 @test4-f2(i32 [[U]]) #2, !range !3
; NEW_PM-NEXT:    ret i32 [[CALL]]
entry:
  %call = tail call i32 @test4-f2(i32 %u)
  ret i32 %call
}

define dso_local i32 @test-5() {
; CHECK-LABEL: define {{[^@]+}}@test-5()
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[CALL:%.*]] = call i32 @rec(i32 0), !range !3
; CHECK-NEXT:    ret i32 [[CALL]]
; OLD_PM-LABEL: define {{[^@]+}}@test-5()
; OLD_PM-NEXT:  entry:
; OLD_PM-NEXT:    [[CALL:%.*]] = call i32 @rec(i32 0), !range !3
; OLD_PM-NEXT:    ret i32 [[CALL]]
;
; NEW_PM-LABEL: define {{[^@]+}}@test-5()
; NEW_PM-NEXT:  entry:
; NEW_PM-NEXT:    [[CALL:%.*]] = call i32 @rec(i32 0), !range !4
; NEW_PM-NEXT:    ret i32 [[CALL]]
;
entry:
  %call = call i32 @rec(i32 0)
@@ -688,4 +697,8 @@ entry:
; CHECK: !0 = !{i32 0, i32 10}
; CHECK-NEXT: !1 = !{i32 10, i32 100}
; CHECK-NEXT: !2 = !{i32 200, i32 1091}
; OLD_PM:     !3 = !{i32 0, i32 2}
; NEW_PM:     !3 = !{i32 1, i32 -2147483648}
; NEW_PM:     !4 = !{i32 0, i32 2}