1e9716c64SJuan Manuel MARTINEZ CAAMAÑO; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2e9716c64SJuan Manuel MARTINEZ CAAMAÑO; RUN: opt -S -o - -structurizecfg -verify-dom-info < %s | FileCheck %s 3e9716c64SJuan Manuel MARTINEZ CAAMAÑO 4e9716c64SJuan Manuel MARTINEZ CAAMAÑO; This test hits a limitation in StructurizeCFG: it doesn't handle infinite-loops. 5e9716c64SJuan Manuel MARTINEZ CAAMAÑO; In this case, the IR remains unchanged. 6e9716c64SJuan Manuel MARTINEZ CAAMAÑO 7*bf6f82a9SMatt Arsenaultdefine void @infinite_loop_false(ptr addrspace(1) %out, i1 %cond) { 8e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK-LABEL: @infinite_loop_false( 9e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK-NEXT: entry: 10e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK-NEXT: br i1 [[COND:%.*]], label [[FOR_END:%.*]], label [[FOR_BODY:%.*]] 11e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK: for.body: 12*bf6f82a9SMatt Arsenault; CHECK-NEXT: store volatile i32 999, ptr addrspace(1) [[OUT:%.*]], align 4 13e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK-NEXT: br label [[FOR_BODY]] 14e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK: for.end: 15e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK-NEXT: ret void 16e9716c64SJuan Manuel MARTINEZ CAAMAÑO; 17e9716c64SJuan Manuel MARTINEZ CAAMAÑOentry: 18e9716c64SJuan Manuel MARTINEZ CAAMAÑO br i1 %cond, label %for.end, label %for.body 19e9716c64SJuan Manuel MARTINEZ CAAMAÑO 20e9716c64SJuan Manuel MARTINEZ CAAMAÑOfor.body: 21*bf6f82a9SMatt Arsenault store volatile i32 999, ptr addrspace(1) %out, align 4 22e9716c64SJuan Manuel MARTINEZ CAAMAÑO br label %for.body 23e9716c64SJuan Manuel MARTINEZ CAAMAÑO 24e9716c64SJuan Manuel MARTINEZ CAAMAÑOfor.end: 25e9716c64SJuan Manuel MARTINEZ CAAMAÑO ret void 26e9716c64SJuan Manuel MARTINEZ CAAMAÑO} 27e9716c64SJuan Manuel MARTINEZ CAAMAÑO 28*bf6f82a9SMatt Arsenaultdefine void @infinite_loop_on_branch(ptr addrspace(1) %out, i1 %cond) { 29e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK-LABEL: @infinite_loop_on_branch( 30e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK-NEXT: entry: 31e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK-NEXT: br i1 [[COND:%.*]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]] 32e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK: if.then: 33e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK-NEXT: br label [[FOR_BODY:%.*]] 34e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK: for.body: 35*bf6f82a9SMatt Arsenault; CHECK-NEXT: store volatile i32 999, ptr addrspace(1) [[OUT:%.*]], align 4 36e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK-NEXT: br label [[FOR_BODY]] 37e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK: if.else: 38*bf6f82a9SMatt Arsenault; CHECK-NEXT: store volatile i32 111, ptr addrspace(1) [[OUT]], align 4 39e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK-NEXT: br label [[EXIT:%.*]] 40e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK: exit: 41e9716c64SJuan Manuel MARTINEZ CAAMAÑO; CHECK-NEXT: ret void 42e9716c64SJuan Manuel MARTINEZ CAAMAÑO; 43e9716c64SJuan Manuel MARTINEZ CAAMAÑOentry: 44e9716c64SJuan Manuel MARTINEZ CAAMAÑO br i1 %cond, label %if.then, label %if.else 45e9716c64SJuan Manuel MARTINEZ CAAMAÑO 46e9716c64SJuan Manuel MARTINEZ CAAMAÑOif.then: 47e9716c64SJuan Manuel MARTINEZ CAAMAÑO br label %for.body 48e9716c64SJuan Manuel MARTINEZ CAAMAÑO 49e9716c64SJuan Manuel MARTINEZ CAAMAÑOfor.body: 50*bf6f82a9SMatt Arsenault store volatile i32 999, ptr addrspace(1) %out, align 4 51e9716c64SJuan Manuel MARTINEZ CAAMAÑO br label %for.body 52e9716c64SJuan Manuel MARTINEZ CAAMAÑO 53e9716c64SJuan Manuel MARTINEZ CAAMAÑOif.else: 54*bf6f82a9SMatt Arsenault store volatile i32 111, ptr addrspace(1) %out, align 4 55e9716c64SJuan Manuel MARTINEZ CAAMAÑO br label %exit 56e9716c64SJuan Manuel MARTINEZ CAAMAÑO 57e9716c64SJuan Manuel MARTINEZ CAAMAÑOexit: 58e9716c64SJuan Manuel MARTINEZ CAAMAÑO ret void 59e9716c64SJuan Manuel MARTINEZ CAAMAÑO} 60