Why do we have this environment switch? All supported environments on Windows return small structs in EAX:EDX. Looks like you added it back in r204978 and we don't actually need it.
On Mon, Nov 24, 2014 at 12:14 PM, Saleem Abdulrasool <[email protected]> wrote: > Author: compnerd > Date: Mon Nov 24 14:14:29 2014 > New Revision: 222680 > > URL: http://llvm.org/viewvc/llvm-project?rev=222680&view=rev > Log: > CodeGen: make i686-windows-itanium more similar to msvc > > The itanium environment follows the system calling convention for > structures. > Pass small aggregates via registers. > > Modified: > cfe/trunk/lib/CodeGen/TargetInfo.cpp > cfe/trunk/test/CodeGen/windows-struct-abi.c > > Modified: cfe/trunk/lib/CodeGen/TargetInfo.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.cpp?rev=222680&r1=222679&r2=222680&view=diff > > ============================================================================== > --- cfe/trunk/lib/CodeGen/TargetInfo.cpp (original) > +++ cfe/trunk/lib/CodeGen/TargetInfo.cpp Mon Nov 24 14:14:29 2014 > @@ -1307,6 +1307,7 @@ bool X86_32TargetCodeGenInfo::isStructRe > case llvm::Triple::UnknownEnvironment: > case llvm::Triple::Cygnus: > case llvm::Triple::GNU: > + case llvm::Triple::Itanium: > case llvm::Triple::MSVC: > return true; > default: > > Modified: cfe/trunk/test/CodeGen/windows-struct-abi.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/windows-struct-abi.c?rev=222680&r1=222679&r2=222680&view=diff > > ============================================================================== > --- cfe/trunk/test/CodeGen/windows-struct-abi.c (original) > +++ cfe/trunk/test/CodeGen/windows-struct-abi.c Mon Nov 24 14:14:29 2014 > @@ -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) > + > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
