brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 4845d7c Raw
106 lines · c
1// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - -O3 -no-struct-path-tbaa | FileCheck %s2// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - -O3 | FileCheck %s --check-prefix=PATH3 4static int f0(int n) {5  struct s0 {6    int a : 30;7    int b : 2;8    long long c : 31;9  } x = { 0xdeadbeef, 0xdeadbeef, 0xdeadbeef };10  11  x.a += n;12  x.b += n;13  x.c += n;14 15  return x.a + x.b + x.c;16}17 18int g0(void) {19// CHECK-LABEL: @g0()20// CHECK: ret i32 121// PATH-LABEL: @g0()22// PATH: ret i32 123  return f0(-1) + 44335655;24}25 26static int f1(void) {27  struct s1 { 28    int a:13; 29    char b; 30    unsigned short c:7;31  } x;32  33  x.a = -40;34  x.b = 10;35  x.c = 15;36 37  return x.a + x.b + x.c;38}39 40int g1(void) {41// CHECK-LABEL: @g1()42// CHECK: ret i32 143// PATH-LABEL: @g1()44// PATH: ret i32 145  return f1() + 16;46}47 48static int f2(void) {49  struct s2 {50    short a[3];51    int b : 15;52  } x;53  54  x.a[0] = x.a[1] = x.a[2] = -40;55  x.b = 10;56 57  return x.b;58}59 60int g2(void) {61// CHECK-LABEL: @g2()62// CHECK: ret i32 163// PATH-LABEL: @g2()64// PATH: ret i32 165  return f2() - 9;66}67 68static int f3(int n) {69  struct s3 {70    unsigned a:16;71    unsigned b:28 __attribute__ ((packed));72  } x = { 0xdeadbeef, 0xdeadbeef };73  struct s4 {74    signed a:16;75    signed b:28 __attribute__ ((packed));76  } y;77  y.a = -0x56789abcL;78  y.b = -0x56789abcL;79  return ((y.a += x.a += n) + 80          (y.b += x.b += n));81}82 83int g3(void) {84// CHECK-LABEL: @g3()85// CHECK: ret i32 186// PATH-LABEL: @g3()87// PATH: ret i32 188  return f3(20) + 130725747;89}90 91static int f4(void) {92  struct s5 {93    int b:1;94  } x;95  x.b = 1;96  return x.b;97}98 99int g4(void) {100// CHECK-LABEL: @g4()101// CHECK: ret i32 1102// PATH-LABEL: @g4()103// PATH: ret i32 1104  return f4() + 2;105}106