Tests exercizing TBAA metadata (both purposefully and not), and previously generated via UTC, have been regenerated and updated to version 6.
81 lines
3.8 KiB
LLVM
81 lines
3.8 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
|
|
; RUN: opt -S -passes=openmp-opt-cgscc < %s | FileCheck %s
|
|
%struct.ident_t = type { i32, i32, i32, i32, ptr }
|
|
|
|
@.str = private unnamed_addr constant [23 x i8] c";unknown;unknown;0;0;;\00", align 1
|
|
@0 = private unnamed_addr global %struct.ident_t { i32 0, i32 2, i32 0, i32 0, ptr @.str }, align 8
|
|
|
|
; Function Attrs: nounwind uwtable
|
|
define dso_local i32 @b() #0 {
|
|
; CHECK-LABEL: define dso_local i32 @b(
|
|
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
|
|
; CHECK-NEXT: [[TMP1:%.*]] = alloca i32, align 4
|
|
; CHECK-NEXT: [[TMP2:%.*]] = call i32 @a()
|
|
; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[TMP1]], align 4
|
|
; CHECK-NEXT: ret i32 [[TMP3]]
|
|
;
|
|
%1 = alloca i32, align 4
|
|
%2 = call i32 @a()
|
|
%3 = load i32, ptr %1, align 4
|
|
ret i32 %3
|
|
}
|
|
|
|
; Function Attrs: nounwind uwtable
|
|
define internal i32 @a() #0 {
|
|
; CHECK-LABEL: define internal i32 @a(
|
|
; CHECK-SAME: ) #[[ATTR0]] {
|
|
; CHECK-NEXT: [[TMP1:%.*]] = alloca i32, align 4
|
|
; CHECK-NEXT: [[TMP2:%.*]] = call i32 @b()
|
|
; CHECK-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr @[[GLOB0:[0-9]+]], i32 0, ptr @.omp_outlined.)
|
|
; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[TMP1]], align 4
|
|
; CHECK-NEXT: ret i32 [[TMP3]]
|
|
;
|
|
%1 = alloca i32, align 4
|
|
%2 = call i32 @b()
|
|
call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr @0, i32 0, ptr @.omp_outlined.)
|
|
%3 = load i32, ptr %1, align 4
|
|
ret i32 %3
|
|
}
|
|
|
|
; Function Attrs: norecurse nounwind uwtable
|
|
define internal void @.omp_outlined.(ptr noalias %0, ptr noalias %1) #1 {
|
|
; CHECK-LABEL: define internal void @.omp_outlined.(
|
|
; CHECK-SAME: ptr noalias [[TMP0:%.*]], ptr noalias [[TMP1:%.*]]) #[[ATTR1:[0-9]+]] {
|
|
; CHECK-NEXT: [[TMP3:%.*]] = alloca ptr, align 8
|
|
; CHECK-NEXT: [[TMP4:%.*]] = alloca ptr, align 8
|
|
; CHECK-NEXT: store ptr [[TMP0]], ptr [[TMP3]], align 8, !tbaa [[ANYPTR_TBAA2:![0-9]+]]
|
|
; CHECK-NEXT: store ptr [[TMP1]], ptr [[TMP4]], align 8, !tbaa [[ANYPTR_TBAA2]]
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
%3 = alloca ptr, align 8
|
|
%4 = alloca ptr, align 8
|
|
store ptr %0, ptr %3, align 8, !tbaa !2
|
|
store ptr %1, ptr %4, align 8, !tbaa !2
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare !callback !6 void @__kmpc_fork_call(ptr, i32, ptr, ...) #2
|
|
|
|
attributes #0 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
|
attributes #1 = { norecurse nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
|
|
attributes #2 = { nounwind }
|
|
|
|
!llvm.module.flags = !{!0}
|
|
!llvm.ident = !{!1}
|
|
|
|
!0 = !{i32 1, !"wchar_size", i32 4}
|
|
!1 = !{!"Debian clang version 11.0.0-++20200709100646+c92a8c0a0f6-1~exp1~20200709201313.3348"}
|
|
!2 = !{!3, !3, i64 0}
|
|
!3 = !{!"any pointer", !4, i64 0}
|
|
!4 = !{!"omnipotent char", !5, i64 0}
|
|
!5 = !{!"Simple C/C++ TBAA"}
|
|
!6 = !{!7}
|
|
!7 = !{i64 2, i64 -1, i64 -1, i1 true}
|
|
;.
|
|
; CHECK: [[ANYPTR_TBAA2]] = !{[[META3:![0-9]+]], [[META3]], i64 0}
|
|
; CHECK: [[META3]] = !{!"any pointer", [[META4:![0-9]+]], i64 0}
|
|
; CHECK: [[META4]] = !{!"omnipotent char", [[META5:![0-9]+]], i64 0}
|
|
; CHECK: [[META5]] = !{!"Simple C/C++ TBAA"}
|
|
;.
|