r222680 - CodeGen: make i686-windows-itanium more similar to msvc
Reid Kleckner
rnk at google.com
Mon Nov 24 13:54:06 PST 2014
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 <compnerd at compnerd.org>
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
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20141124/4fd37560/attachment.html>
More information about the cfe-commits
mailing list