brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · cfe5c1c Raw
101 lines · c
1// REQUIRES: powerpc-registered-target2// RUN: %clang_cc1 -triple powerpc-unknown-freebsd \3// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-SVR44// RUN: %clang_cc1 -triple powerpcle-unknown-freebsd \5// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-SVR46// RUN: %clang_cc1 -triple powerpc-unknown-aix \7// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-AIX8// RUN: %clang_cc1 -triple powerpc64-unknown-aix \9// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-AIX10// RUN: %clang_cc1 -triple powerpc-unknown-linux \11// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-AIX12// RUN: %clang_cc1 -triple powerpc-unknown-linux -maix-struct-return \13// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-AIX14// RUN: %clang_cc1 -triple powerpc-unknown-linux -msvr4-struct-return \15// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-SVR416// RUN: %clang_cc1 -triple powerpcle-unknown-linux \17// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-AIX18// RUN: %clang_cc1 -triple powerpcle-unknown-linux -maix-struct-return \19// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-AIX20// RUN: %clang_cc1 -triple powerpcle-unknown-linux -msvr4-struct-return \21// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-SVR422// RUN: %clang_cc1 -triple powerpc-unknown-netbsd \23// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-SVR424// RUN: %clang_cc1 -triple powerpc-unknown-openbsd \25// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-SVR426// RUN: %clang_cc1 -triple powerpc-unknown-openbsd -maix-struct-return \27// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-AIX28// RUN: %clang_cc1 -triple powerpc-unknown-openbsd -msvr4-struct-return \29// RUN:   -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-SVR430 31typedef struct {32} Zero;33typedef struct {34  char c;35} One;36typedef struct {37  short s;38} Two;39typedef struct {40  char c[3];41} Three;42typedef struct {43  float f;44} Four; // svr4 to return i32, not float45typedef struct {46  char c[5];47} Five;48typedef struct {49  short s[3];50} Six;51typedef struct {52  char c[7];53} Seven;54typedef struct {55  int i;56  char c;57} Eight; // padded for alignment58typedef struct {59  char c[9];60} Nine;61 62// CHECK-AIX-LABEL:  define{{.*}} void @ret0(ptr dead_on_unwind noalias writable sret(%struct.Zero) {{[^,]*}})63// CHECK-SVR4-LABEL: define{{.*}} void @ret0()64Zero ret0(void) { return (Zero){}; }65 66// CHECK-AIX-LABEL:  define{{.*}} void @ret1(ptr dead_on_unwind noalias writable sret(%struct.One) {{[^,]*}})67// CHECK-SVR4-LABEL: define{{.*}} i8 @ret1()68One ret1(void) { return (One){'a'}; }69 70// CHECK-AIX-LABEL:  define{{.*}} void @ret2(ptr dead_on_unwind noalias writable sret(%struct.Two) {{[^,]*}})71// CHECK-SVR4-LABEL: define{{.*}} i16 @ret2()72Two ret2(void) { return (Two){123}; }73 74// CHECK-AIX-LABEL:  define{{.*}} void @ret3(ptr dead_on_unwind noalias writable sret(%struct.Three) {{[^,]*}})75// CHECK-SVR4-LABEL: define{{.*}} i24 @ret3()76Three ret3(void) { return (Three){"abc"}; }77 78// CHECK-AIX-LABEL:  define{{.*}} void @ret4(ptr dead_on_unwind noalias writable sret(%struct.Four) {{[^,]*}})79// CHECK-SVR4-LABEL: define{{.*}} i32 @ret4()80Four ret4(void) { return (Four){0.4}; }81 82// CHECK-AIX-LABEL:  define{{.*}} void @ret5(ptr dead_on_unwind noalias writable sret(%struct.Five) {{[^,]*}})83// CHECK-SVR4-LABEL: define{{.*}} i40 @ret5()84Five ret5(void) { return (Five){"abcde"}; }85 86// CHECK-AIX-LABEL:  define{{.*}} void @ret6(ptr dead_on_unwind noalias writable sret(%struct.Six) {{[^,]*}})87// CHECK-SVR4-LABEL: define{{.*}} i48 @ret6()88Six ret6(void) { return (Six){12, 34, 56}; }89 90// CHECK-AIX-LABEL:  define{{.*}} void @ret7(ptr dead_on_unwind noalias writable sret(%struct.Seven) {{[^,]*}})91// CHECK-SVR4-LABEL: define{{.*}} i56 @ret7()92Seven ret7(void) { return (Seven){"abcdefg"}; }93 94// CHECK-AIX-LABEL:  define{{.*}} void @ret8(ptr dead_on_unwind noalias writable sret(%struct.Eight) {{[^,]*}})95// CHECK-SVR4-LABEL: define{{.*}} i64 @ret8()96Eight ret8(void) { return (Eight){123, 'a'}; }97 98// CHECK-AIX-LABEL:  define{{.*}} void @ret9(ptr dead_on_unwind noalias writable sret(%struct.Nine) {{[^,]*}})99// CHECK-SVR4-LABEL: define{{.*}} void @ret9(ptr dead_on_unwind noalias writable sret(%struct.Nine) {{[^,]*}})100Nine ret9(void) { return (Nine){"abcdefghi"}; }101