// RUN: mlir-opt --split-input-file --remove-dead-values --mlir-print-op-generic %s | FileCheck %s --check-prefix=GEN

// -----
// Private callee: both args become dead after internal DCE; RDV drops callee
// args and shrinks the *args* segment on the call-site to zero; sizes kept in
// sync.

module {
  func.func private @callee(%x: i32, %y: i32) {
    %u = arith.addi %x, %x : i32   // %y is dead
    return
  }

  func.func @caller(%a: i32, %b: i32) {
    // args segment initially has 2 operands.
    "test.call_with_segments"(%a, %b) { callee = @callee,
      operandSegmentSizes = array<i32: 0, 2, 0> } : (i32, i32) -> ()
    return
  }
}

// GEN: "test.call_with_segments"() <{callee = @callee, operandSegmentSizes = array<i32: 0, 0, 0>}> : () -> ()
//       ^ args shrank from 2 -> 0