Files
swift-mirror/test/IRGen/annotated_cond_fail.swift
Anthony Latsis df229ca665 [rebranch][test] IRGen: Adjust icmp check that is now marked samesign
Per b7db403e701029c801fd990dceeb219de9fb800c (llvm-project).
2025-05-08 09:49:47 +01:00

28 lines
1.1 KiB
Swift

// RUN: %target-swift-frontend -module-name A -enable-cond-fail-message-annotation -primary-file %s -O -emit-ir | %FileCheck %s
// REQUIRES: swift_stdlib_no_asserts,optimized_stdlib
// REQUIRES: PTRSIZE=64
public func test(_ a: [Int], _ i: Int) -> Int {
return a[i + 1]
}
// CHECK: define{{.*}} swiftcc i64 @"$s1A4testySiSaySiG_SitF"(ptr{{.*}} %0, i64 %1)
// CHECK: [[ADD:%.*]] = tail call { i64, i1 } @llvm.sadd.with.overflow.i64(i64 %1, i64 1)
// CHECK: [[IDX:%.*]] = extractvalue { i64, i1 } [[ADD]], 0
// CHECK: [[OVERFLOW:%.*]] = extractvalue { i64, i1 } [[ADD]], 1
// CHECK: br i1 [[OVERFLOW]], {{.*}}!annotation ![[ARITH_OVERFLOW:[0-9]+]]
// CHECK: [[C0:%.*]] = icmp slt i64 [[IDX]], 0
// CHECK: br i1 [[C0]], {{.*}}!annotation ![[ARRAY_INDEX_OUT_OF_BOUNDS:[0-9]+]]
// CHECK: [[SIZE_ADDR:%.*]] = getelementptr
// CHECK: [[SIZE:%.*]] = load i64, ptr [[SIZE_ADDR]]
// CHECK: [[C1:%.*]] = icmp samesign ult i64 [[IDX]], [[SIZE]]
// CHECK: br i1 [[C1]], {{.*}}!annotation ![[ARRAY_INDEX_OUT_OF_BOUNDS]]
// CHECK-DAG: ![[ARITH_OVERFLOW]] = !{!"arithmetic overflow"}
// CHECK-DAG: ![[ARRAY_INDEX_OUT_OF_BOUNDS]] = !{!"Index out of range"}