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

Reply via email to