Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / Transforms / SCCP / pthreads.ll
blob20d9f12ff6c3146c59d95311fdc2c087ab50a2a2
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -passes=ipsccp -S < %s | FileCheck %s
4 ;    #include <pthread.h>
6 ;    ptr GlobalVPtr;
8 ;    static ptr foo(ptr arg) { return arg; }
9 ;    static ptr bar(ptr arg) { return arg; }
11 ;    int main() {
12 ;      pthread_t thread;
13 ;      pthread_create(&thread, NULL, foo, NULL);
14 ;      pthread_create(&thread, NULL, bar, &GlobalVPtr);
15 ;      return 0;
16 ;    }
18 ; Verify the constant values NULL and &GlobalVPtr are propagated into foo and
19 ; bar, respectively.
21 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
23 %union.pthread_attr_t = type { i64, [48 x i8] }
25 @GlobalVPtr = common dso_local global ptr null, align 8
27 define dso_local i32 @main() {
28 ; CHECK-LABEL: @main(
29 ; CHECK-NEXT:  entry:
30 ; CHECK-NEXT:    [[THREAD:%.*]] = alloca i64, align 8
31 ; CHECK-NEXT:    [[CALL:%.*]] = call i32 @pthread_create(ptr nonnull [[THREAD]], ptr null, ptr nonnull @foo, ptr null)
32 ; CHECK-NEXT:    [[CALL1:%.*]] = call i32 @pthread_create(ptr nonnull [[THREAD]], ptr null, ptr nonnull @bar, ptr @GlobalVPtr)
33 ; CHECK-NEXT:    ret i32 0
35 entry:
36   %thread = alloca i64, align 8
37   %call = call i32 @pthread_create(ptr nonnull %thread, ptr null, ptr nonnull @foo, ptr null)
38   %call1 = call i32 @pthread_create(ptr nonnull %thread, ptr null, ptr nonnull @bar, ptr @GlobalVPtr)
39   ret i32 0
42 declare !callback !0 dso_local i32 @pthread_create(ptr, ptr, ptr, ptr)
44 define internal ptr @foo(ptr %arg) {
45 ; CHECK-LABEL: @foo(
46 ; CHECK-NEXT:  entry:
47 ; CHECK-NEXT:    ret ptr [[ARG:%.*]]
49 entry:
50   ret ptr %arg
53 define internal ptr @bar(ptr %arg) {
54 ; CHECK-LABEL: @bar(
55 ; CHECK-NEXT:  entry:
56 ; CHECK-NEXT:    ret ptr [[ARG:%.*]]
58 entry:
59   ret ptr %arg
62 !1 = !{i64 2, i64 3, i1 false}
63 !0 = !{!1}