// RUN: cir-opt %s --verify-roundtrip | FileCheck %s !void = !cir.void !u64i = !cir.int module { cir.func @assume_plain() { %0 = cir.const #cir.bool : !cir.bool cir.assume %0 : !cir.bool cir.return } // CHECK: #true = #cir.bool : !cir.bool // CHECK: cir.func{{.*}} @assume_plain() { // CHECK: %0 = cir.const #true // CHECK: cir.assume %0 : !cir.bool // CHECK: cir.return // CHECK: } cir.func @assume_dereferenceable(%ptr : !cir.ptr, %size : !u64i) { %0 = cir.const #cir.bool : !cir.bool cir.assume %0 dereferenceable(%ptr, %size : !cir.ptr, !u64i) : !cir.bool cir.return } // CHECK: cir.func{{.*}} @assume_dereferenceable( // CHECK: %0 = cir.const #true // CHECK: cir.assume %0 dereferenceable(%{{.+}}, %{{.+}} : !cir.ptr, !u64i) // CHECK: : !cir.bool // CHECK: cir.return // CHECK: } cir.func @assume_separate_storage(%a : !cir.ptr, %b : !cir.ptr) { %0 = cir.const #cir.bool : !cir.bool cir.assume %0 separate_storage(%a, %b : !cir.ptr, !cir.ptr) : !cir.bool cir.return } // CHECK: cir.func{{.*}} @assume_separate_storage( // CHECK: %0 = cir.const #true // CHECK: cir.assume %0 separate_storage(%{{.+}}, %{{.+}} : !cir.ptr, // CHECK: !cir.ptr) : !cir.bool // CHECK: cir.return // CHECK: } cir.func @assume_align(%ptr : !cir.ptr, %align : !u64i) { %0 = cir.const #cir.bool : !cir.bool cir.assume %0 align(%ptr, %align : !cir.ptr, !u64i) : !cir.bool cir.return } // CHECK: cir.func{{.*}} @assume_align( // CHECK: %0 = cir.const #true // CHECK: cir.assume %0 align(%{{.+}}, %{{.+}} : !cir.ptr, !u64i) // CHECK: : !cir.bool // CHECK: cir.return // CHECK: } }