x86_64-arguments.cpp revision ce9f423d2ce4b8699d9f6c7623053f645ac4dc6d
1// RUN: clang-cc -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s 2 3// CHECK: [[i64_i64_ty:%.*]] = type { i64, i64 } 4// CHECK: [[i64_double_ty:%.*]] = type { i64, double } 5 6// Basic base class test. 7struct f0_s0 { unsigned a; }; 8struct f0_s1 : public f0_s0 { void *b; }; 9// CHECK: define void @_Z2f05f0_s1([[i64_i64_ty]]) 10void f0(f0_s1 a0) { } 11 12// Check with two eight-bytes in base class. 13struct f1_s0 { unsigned a; unsigned b; float c; }; 14struct f1_s1 : public f1_s0 { float d;}; 15// CHECK: define void @_Z2f15f1_s1([[i64_double_ty]]) 16void f1(f1_s1 a0) { } 17 18// Check with two eight-bytes in base class and merge. 19struct f2_s0 { unsigned a; unsigned b; float c; }; 20struct f2_s1 : public f2_s0 { char d;}; 21// CHECK: define void @_Z2f25f2_s1([[i64_i64_ty]]) 22void f2(f2_s1 a0) { } 23 24 25