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:
Saleem Abdulrasool 2014-11-24 20:14:29 +00:00
parent 76ecafd523
commit aca550fdb5
2 changed files with 18 additions and 2 deletions

View File

@ -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:

View File

@ -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)