mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 01:16:05 +00:00

According to the Sparc V8 ABI, complex numbers should be passed and returned as pairs of registers: https://docs.oracle.com/cd/E26502_01/html/E28387/gentextid-2734.html This fix ensures this is the case. Without this, complex numbers are returned as a struct of two floats, which breaks the ABI rules. Differential Review: http://reviews.llvm.org/D20955 llvm-svn: 272148
20 lines
662 B
C
20 lines
662 B
C
// RUN: %clang_cc1 -triple sparc-unknown-unknown -emit-llvm %s -o - | FileCheck %s
|
|
|
|
// CHECK-LABEL: define { float, float } @p({ float, float }* byval align 4 %a, { float, float }* byval align 4 %b) #0 {
|
|
float __complex__
|
|
p (float __complex__ a, float __complex__ b)
|
|
{
|
|
}
|
|
|
|
// CHECK-LABEL: define { double, double } @q({ double, double }* byval align 8 %a, { double, double }* byval align 8 %b) #0 {
|
|
double __complex__
|
|
q (double __complex__ a, double __complex__ b)
|
|
{
|
|
}
|
|
|
|
// CHECK-LABEL: define { i64, i64 } @r({ i64, i64 }* byval align 8 %a, { i64, i64 }* byval align 8 %b) #0 {
|
|
long long __complex__
|
|
r (long long __complex__ a, long long __complex__ b)
|
|
{
|
|
}
|