forked from OSchip/llvm-project
CodeGen: make i686-windows-itanium more similar to msvc
The itanium environment follows the system calling convention for structures. Pass small aggregates via registers. llvm-svn: 222680
This commit is contained in:
parent
76ecafd523
commit
aca550fdb5
|
@ -1307,6 +1307,7 @@ bool X86_32TargetCodeGenInfo::isStructReturnInRegABI(
|
|||
case llvm::Triple::UnknownEnvironment:
|
||||
case llvm::Triple::Cygnus:
|
||||
case llvm::Triple::GNU:
|
||||
case llvm::Triple::Itanium:
|
||||
case llvm::Triple::MSVC:
|
||||
return true;
|
||||
default:
|
||||
|
|
|
@ -6,7 +6,7 @@ struct f1 {
|
|||
|
||||
struct f1 return_f1(void) { while (1); }
|
||||
|
||||
// CHECK: define void @return_f1(%struct.f1* noalias sret %agg.result)
|
||||
// CHECK: define i32 @return_f1()
|
||||
|
||||
void receive_f1(struct f1 a0) { }
|
||||
|
||||
|
@ -19,9 +19,24 @@ struct f2 {
|
|||
|
||||
struct f2 return_f2(void) { while (1); }
|
||||
|
||||
// CHECK: define void @return_f2(%struct.f2* noalias sret %agg.result)
|
||||
// CHECK: define i64 @return_f2()
|
||||
|
||||
void receive_f2(struct f2 a0) { }
|
||||
|
||||
// CHECK: define void @receive_f2(%struct.f2* byval align 4 %a0)
|
||||
|
||||
struct f4 {
|
||||
float f;
|
||||
float g;
|
||||
float h;
|
||||
float i;
|
||||
};
|
||||
|
||||
struct f4 return_f4(void) { while (1); }
|
||||
|
||||
// CHECK: define void @return_f4(%struct.f4* noalias sret %agg.result)
|
||||
|
||||
void receive_f4(struct f4 a0) { }
|
||||
|
||||
// CHECK: define void @receive_f4(%struct.f4* byval align 4 %a0)
|
||||
|
||||
|
|
Loading…
Reference in New Issue