; This testcase is distilled from the GNU rx package.  The loop should be 
; removed but causes a problem when ADCE does.  The source function is:
; int rx_bitset_empty (int size, rx_Bitset set) {
;  int x;
;  RX_subset s;
;  s = set[0];
;  set[0] = 1;
;  for (x = rx_bitset_numb_subsets(size) - 1; !set[x]; --x)
;    ;
;  set[0] = s;
;  return !s;
;}
;
; RUN: opt < %s -adce

define i32 @rx_bitset_empty(i32 %size, i32* %set) {
bb1:
        %reg110 = load i32* %set                ; <i32> [#uses=2]
        store i32 1, i32* %set
        %cast112 = sext i32 %size to i64                ; <i64> [#uses=1]
        %reg113 = add i64 %cast112, 31          ; <i64> [#uses=1]
        %reg114 = lshr i64 %reg113, 5           ; <i64> [#uses=2]
        %cast109 = trunc i64 %reg114 to i32             ; <i32> [#uses=1]
        %reg129 = add i32 %cast109, -1          ; <i32> [#uses=1]
        %reg114-idxcast = trunc i64 %reg114 to i32              ; <i32> [#uses=1]
        %reg114-idxcast-offset = add i32 %reg114-idxcast, 1073741823            ; <i32> [#uses=1]
        %reg114-idxcast-offset.upgrd.1 = zext i32 %reg114-idxcast-offset to i64         ; <i64> [#uses=1]
        %reg124 = getelementptr i32* %set, i64 %reg114-idxcast-offset.upgrd.1           ; <i32*> [#uses=1]
        %reg125 = load i32* %reg124             ; <i32> [#uses=1]
        %cond232 = icmp ne i32 %reg125, 0               ; <i1> [#uses=1]
        br i1 %cond232, label %bb3, label %bb2

bb2:            ; preds = %bb2, %bb1
        %cann-indvar = phi i32 [ 0, %bb1 ], [ %add1-indvar, %bb2 ]              ; <i32> [#uses=2]
        %reg130-scale = mul i32 %cann-indvar, -1                ; <i32> [#uses=1]
        %reg130 = add i32 %reg130-scale, %reg129                ; <i32> [#uses=1]
        %add1-indvar = add i32 %cann-indvar, 1          ; <i32> [#uses=1]
        %reg130-idxcast = bitcast i32 %reg130 to i32            ; <i32> [#uses=1]
        %reg130-idxcast-offset = add i32 %reg130-idxcast, 1073741823            ; <i32> [#uses=1]
        %reg130-idxcast-offset.upgrd.2 = zext i32 %reg130-idxcast-offset to i64         ; <i64> [#uses=1]
        %reg118 = getelementptr i32* %set, i64 %reg130-idxcast-offset.upgrd.2           ; <i32*> [#uses=1]
        %reg119 = load i32* %reg118             ; <i32> [#uses=1]
        %cond233 = icmp eq i32 %reg119, 0               ; <i1> [#uses=1]
        br i1 %cond233, label %bb2, label %bb3

bb3:            ; preds = %bb2, %bb1
        store i32 %reg110, i32* %set
        %cast126 = zext i32 %reg110 to i64              ; <i64> [#uses=1]
        %reg127 = add i64 %cast126, -1          ; <i64> [#uses=1]
        %reg128 = lshr i64 %reg127, 63          ; <i64> [#uses=1]
        %cast120 = trunc i64 %reg128 to i32             ; <i32> [#uses=1]
        ret i32 %cast120
}

