brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · a533f6c Raw
178 lines · c
1// RUN: %clang_cc1 -triple i386-unknown-unknown %s -emit-llvm -o - | FileCheck %s2 3__attribute__((regparm(3))) void f1(int a, int b, int c, int d);4// CHECK: declare void @f1(i32 inreg noundef, i32 inreg noundef, i32 inreg noundef, i32 noundef)5void g1(void) {6  f1(41, 42, 43, 44);7}8 9struct s1 {10  int x1;11};12__attribute__((regparm(3))) void f2(int a, int b, struct s1 c, int d);13// CHECK: declare void @f2(i32 inreg noundef, i32 inreg noundef, i32 inreg, i32 noundef)14void g2(void) {15  struct s1 x = {43};16  f2(41, 42, x, 44);17}18 19struct s2 {20  int x1;21  int x2;22};23__attribute__((regparm(3))) void f3(int a, int b, struct s2 c, int d);24// CHECK: declare void @f3(i32 inreg noundef, i32 inreg noundef, i32, i32, i32 noundef)25void g3(void) {26  struct s2 x = {43, 44};27  f3(41, 42, x, 45);28}29__attribute__((regparm(3))) void f4(int a, struct s2 b, int c);30// CHECK: declare void @f4(i32 inreg noundef, i32 inreg, i32 inreg, i32 noundef)31void g4(void) {32  struct s2 x = {42, 43};33  f4(41, x, 44);34}35 36struct s3 {37  int x1;38  int x2;39  int x3;40};41__attribute__((regparm(3))) void f5(int a, struct s3 b, int c);42// CHECK: declare void @f5(i32 inreg noundef, i32, i32, i32, i32 noundef)43void g5(void) {44  struct s3 x = {42, 43, 44};45  f5(41, x, 45);46}47__attribute__((regparm(3))) void f6(struct s3 a, int b);48// CHECK: declare void @f6(i32 inreg, i32 inreg, i32 inreg, i32 noundef)49void g6(void) {50  struct s3 x = {41, 42, 43};51  f6(x, 44);52}53 54struct s4 {55  int x1;56  int x2;57  int x3;58  int x4;59};60__attribute__((regparm(3))) void f7(struct s4 a, int b);61// CHECK: declare void @f7(i32, i32, i32, i32, i32 noundef)62void g7(void) {63  struct s4 x = {41, 42, 43, 44};64  f7(x, 45);65}66 67__attribute__((regparm(3))) void f8(float a, int b);68// CHECK: declare void @f8(float noundef, i32 inreg noundef)69void g8(void) {70  f8(41, 42);71}72 73struct s5 {74  float x1;75};76__attribute__((regparm(3))) void f9(struct s5 a, int b);77// CHECK: declare void @f9(float, i32 inreg noundef)78void g9(void) {79  struct s5 x = {41};80  f9(x, 42);81}82 83struct s6 {84  float x1;85  int x2;86};87__attribute__((regparm(3))) void f10(struct s6 a, int b);88// CHECK: declare void @f10(i32 inreg, i32 inreg, i32 inreg noundef)89void g10(void) {90  struct s6 x = {41, 42};91  f10(x, 43);92}93 94struct s7 {95  float x1;96  int x2;97  float x3;98};99__attribute__((regparm(3))) void f11(struct s7 a, int b);100// CHECK: declare void @f11(i32 inreg, i32 inreg, i32 inreg, i32 noundef)101void g11(void) {102  struct s7 x = {41, 42, 43};103  f11(x, 44);104}105 106struct s8 {107  float x1;108  float x2;109};110__attribute__((regparm(3))) void f12(struct s8 a, int b);111// CHECK: declare void @f12(i32 inreg, i32 inreg, i32 inreg noundef)112void g12(void) {113  struct s8 x = {41, 42};114  f12(x, 43);115}116 117struct s9 {118  float x1;119  float x2;120  float x3;121};122__attribute__((regparm(3))) void f13(struct s9 a, int b);123// CHECK: declare void @f13(i32 inreg, i32 inreg, i32 inreg, i32 noundef)124void g13(void) {125  struct s9 x = {41, 42, 43};126  f13(x, 44);127}128 129struct s10 {130  double x1;131};132__attribute__((regparm(3))) void f14(struct s10 a, int b, int c);133// CHECK: declare void @f14(double, i32 inreg noundef, i32 inreg noundef)134void g14(void) {135  struct s10 x = { 41 };136  f14(x, 42, 43);137}138 139struct s11 {140  double x1;141  double x2;142};143__attribute__((regparm(3))) void f15(struct s11 a, int b);144// CHECK: declare void @f15(double, double, i32 noundef)145void g15(void) {146  struct s11 x = { 41, 42 };147  f15(x, 43);148}149 150struct s12 {151  double x1;152  float x2;153};154__attribute__((regparm(3))) void f16(struct s12 a, int b);155// CHECK: declare void @f16(i32 inreg, i32 inreg, i32 inreg, i32 noundef)156void g16(void) {157  struct s12 x = { 41, 42 };158  f16(x, 43);159}160 161__attribute__((regparm(3))) struct s12 f17(int a, int b, int c);162// CHECK: declare void @f17(ptr dead_on_unwind inreg writable sret(%struct.s12) align 4, i32 inreg noundef, i32 inreg noundef, i32 noundef)163void g17(void) {164  f17(41, 42, 43);165}166 167struct s13 {168  struct inner {169    float x;170  } y;171};172__attribute__((regparm(3))) void f18(struct s13 a, int b, int c, int d);173// CHECK: declare void @f18(ptr noundef byval(%struct.s13) align 4, i32 inreg noundef, i32 inreg noundef, i32 inreg noundef)174void g18(void) {175  struct s13 x = {{41}};176  f18(x, 42, 43, 44);177}178