brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · 6be0c58 Raw
149 lines · plain
1; RUN: opt -mtriple=s390x-linux-gnu -mcpu=z13 -verify-memoryssa -passes='function(sroa),globalopt,function-attrs,function(simplifycfg,loop-mssa(licm),loop(simple-loop-unswitch))' %s -S | FileCheck %s2; REQUIRES: asserts3 4target datalayout = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64"5target triple = "s390x-ibm-linux"6 7@0 = internal global i32 -9, align 48@1 = internal global i64 9, align 89@g_1042 = external dso_local global [5 x i16], align 210 11declare void @dummy()12 13; CHECK-LABEL: @main()14; Function Attrs: nounwind15define dso_local void @main() {16  call void @func_1()17  unreachable18}19 20; Function Attrs: nounwind21define dso_local void @func_1() {22  %1 = alloca ptr, align 823  %2 = call signext i32 @func_2()24  %3 = icmp ne i32 %2, 025  br i1 %3, label %4, label %926 27; <label>:4:                                      ; preds = %028  %5 = load i16, ptr @g_1042, align 2, !tbaa !129  %6 = zext i16 %5 to i6430  %7 = load i64, ptr @1, align 8, !tbaa !531  %8 = and i64 %7, %632  store i64 %8, ptr @1, align 8, !tbaa !533  call void @dummy()34  unreachable35 36; <label>:9:                                      ; preds = %037  store ptr @0, ptr %1, align 8, !tbaa !738  br label %1039 40; <label>:10:                                     ; preds = %23, %941  %11 = load i64, ptr @1, align 8, !tbaa !542  %12 = icmp eq i64 %11, 6553543  br i1 %12, label %13, label %1444 45; <label>:13:                                     ; preds = %1046  store ptr null, ptr %1, align 8, !tbaa !747  br label %1448 49; <label>:14:                                     ; preds = %13, %1050  %15 = load ptr, ptr %1, align 8, !tbaa !751  %16 = load i32, ptr %15, align 4, !tbaa !952  %17 = trunc i32 %16 to i1653  %18 = call signext i16 @safe_sub_func_int16_t_s_s(i16 signext %17)54  %19 = sext i16 %18 to i3255  %20 = icmp ne i32 %19, 056  br i1 %20, label %23, label %2157 58; <label>:21:                                     ; preds = %1459  %22 = load volatile i8, ptr null, align 1, !tbaa !1160  br label %2361 62; <label>:23:                                     ; preds = %21, %1463  br label %1064}65 66; Function Attrs: nounwind67declare dso_local signext i32 @func_2()68 69; Function Attrs: nounwind70define dso_local void @safe_sub_func_uint8_t_u_u() {71  ret void72}73 74; Function Attrs: nounwind75define dso_local void @safe_add_func_int64_t_s_s() {76  ret void77}78 79; Function Attrs: nounwind80define dso_local void @safe_rshift_func_int16_t_s_u() {81  ret void82}83 84; Function Attrs: nounwind85define dso_local void @safe_div_func_uint8_t_u_u() {86  ret void87}88 89; Function Attrs: nounwind90define dso_local void @safe_mul_func_uint16_t_u_u() {91  ret void92}93 94; Function Attrs: nounwind95define dso_local void @safe_mul_func_int16_t_s_s() {96  ret void97}98 99; Function Attrs: nounwind100define dso_local void @safe_div_func_int32_t_s_s() {101  ret void102}103 104; Function Attrs: nounwind105define dso_local signext i16 @safe_sub_func_int16_t_s_s(i16 signext) {106  %2 = alloca i16, align 2107  store i16 %0, ptr %2, align 2, !tbaa !1108  %3 = load i16, ptr %2, align 2, !tbaa !1109  %4 = sext i16 %3 to i32110  %5 = sub nsw i32 %4, 0111  %6 = trunc i32 %5 to i16112  ret i16 %6113}114 115; Function Attrs: nounwind116define dso_local void @safe_add_func_uint16_t_u_u() {117  ret void118}119 120; Function Attrs: nounwind121define dso_local void @safe_div_func_int8_t_s_s() {122  ret void123}124 125; Function Attrs: nounwind126define dso_local void @safe_add_func_int16_t_s_s() {127  ret void128}129 130; Function Attrs: nounwind131define dso_local void @safe_add_func_uint8_t_u_u() {132  ret void133}134 135!llvm.ident = !{!0}136 137!0 = !{!"clang version 8.0.0 (http://llvm.org/git/clang.git 7cda4756fc9713d98fd3513b8df172700f267bad) (http://llvm.org/git/llvm.git 199c0d32e96b646bd8cf6beeaf0f99f8a434b56a)"}138!1 = !{!2, !2, i64 0}139!2 = !{!"short", !3, i64 0}140!3 = !{!"omnipotent char", !4, i64 0}141!4 = !{!"Simple C/C++ TBAA"}142!5 = !{!6, !6, i64 0}143!6 = !{!"long", !3, i64 0}144!7 = !{!8, !8, i64 0}145!8 = !{!"any pointer", !3, i64 0}146!9 = !{!10, !10, i64 0}147!10 = !{!"int", !3, i64 0}148!11 = !{!3, !3, i64 0}149