diff options
author | Pengfei Wang <pengfei.wang@intel.com> | 2019-06-12 01:52:23 +0000 |
---|---|---|
committer | Pengfei Wang <pengfei.wang@intel.com> | 2019-06-12 01:52:23 +0000 |
commit | fbfee60c32636a5dec6acceca401a78a1b024025 (patch) | |
tree | ed36880708cf422ad5732fc727505fd2a373df17 /clang/test/CodeGen/x86_32-arguments-linux.c | |
parent | dd4bed3d7a8555db26c256489791bb6c78d5272b (diff) | |
download | bcm5719-llvm-fbfee60c32636a5dec6acceca401a78a1b024025.tar.gz bcm5719-llvm-fbfee60c32636a5dec6acceca401a78a1b024025.zip |
[X86] [ABI] Fix i386 ABI "__m64" type bug
According to System V i386 ABI: the __m64 type paramater and return
value are passed by MMX registers. But current implementation treats
__m64 as i64 which results in parameter passing by stack and returning
by EDX and EAX.
This patch fixes the bug (https://bugs.llvm.org/show_bug.cgi?id=41029)
for Linux and NetBSD.
Patch by Wei Xiao (wxiao3)
Differential Revision: https://reviews.llvm.org/D59744
llvm-svn: 363116
Diffstat (limited to 'clang/test/CodeGen/x86_32-arguments-linux.c')
-rw-r--r-- | clang/test/CodeGen/x86_32-arguments-linux.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/test/CodeGen/x86_32-arguments-linux.c b/clang/test/CodeGen/x86_32-arguments-linux.c index 3c64fbcc15b..1bdaa628eb2 100644 --- a/clang/test/CodeGen/x86_32-arguments-linux.c +++ b/clang/test/CodeGen/x86_32-arguments-linux.c @@ -3,7 +3,7 @@ // CHECK-LABEL: define void @f56( // CHECK: i8 signext %a0, %struct.s56_0* byval(%struct.s56_0) align 4 %a1, -// CHECK: i64 %a2.coerce, %struct.s56_1* byval(%struct.s56_1) align 4, +// CHECK: x86_mmx %a2.coerce, %struct.s56_1* byval(%struct.s56_1) align 4, // CHECK: <1 x double> %a4, %struct.s56_2* byval(%struct.s56_2) align 4, // CHECK: <4 x i32> %a6, %struct.s56_3* byval(%struct.s56_3) align 4, // CHECK: <2 x double> %a8, %struct.s56_4* byval(%struct.s56_4) align 4, @@ -12,7 +12,7 @@ // CHECK: call void (i32, ...) @f56_0(i32 1, // CHECK: i32 %{{.*}}, %struct.s56_0* byval(%struct.s56_0) align 4 %{{[^ ]*}}, -// CHECK: i64 %{{[^ ]*}}, %struct.s56_1* byval(%struct.s56_1) align 4 %{{[^ ]*}}, +// CHECK: x86_mmx %{{[^ ]*}}, %struct.s56_1* byval(%struct.s56_1) align 4 %{{[^ ]*}}, // CHECK: <1 x double> %{{[^ ]*}}, %struct.s56_2* byval(%struct.s56_2) align 4 %{{[^ ]*}}, // CHECK: <4 x i32> %{{[^ ]*}}, %struct.s56_3* byval(%struct.s56_3) align 4 %{{[^ ]*}}, // CHECK: <2 x double> %{{[^ ]*}}, %struct.s56_4* byval(%struct.s56_4) align 4 %{{[^ ]*}}, |