Files
clang-p2996/llvm/test/Transforms/Attributor/chain.ll
Johannes Doerfert 02a4fcec6b [Attributor] Port AANonNull to the isImpliedByIR interface
AANonNull is now the first AA that is always queried via the new APIs
and not created manually. Others will follow shortly to avoid trivial
AAs whenever possible.

This commit introduced some helper logic that will make it simpler to
port the next one. It also untangles AADereferenceable and AANonNull
such that the former does not keep a handle on the latter. Finally,
we stop deducing `nonnull` for `undef`, which was incorrect.
2023-07-09 16:04:19 -07:00

23 lines
1.2 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --scrub-attributes --check-attributes --check-globals
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-annotate-decl-cs -attributor-max-initialization-chain-length=1 -S < %s | FileCheck %s --check-prefixes=CHECK,CHECK_1
; RUN: opt -aa-pipeline=basic-aa -passes=attributor -attributor-manifest-internal -attributor-annotate-decl-cs -attributor-max-initialization-chain-length=1024 -S < %s | FileCheck %s --check-prefixes=CHECK,CHECK_5
declare void @foo(ptr dereferenceable(8) %arg)
define dso_local i32 @bar(ptr %arg) {
; CHECK-LABEL: define {{[^@]+}}@bar
; CHECK-SAME: (ptr noundef nonnull dereferenceable(8) [[ARG:%.*]]) {
; CHECK-NEXT: entry:
; CHECK-NEXT: call void @foo(ptr noundef nonnull dereferenceable(8) [[ARG]])
; CHECK-NEXT: [[LD:%.*]] = load i32, ptr [[ARG]], align 4
; CHECK-NEXT: ret i32 [[LD]]
;
entry:
call void @foo(ptr %arg)
%ld = load i32, ptr %arg
ret i32 %ld
}
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
; CHECK_1: {{.*}}
; CHECK_5: {{.*}}