[cfe-commits] r137762 - /cfe/trunk/test/CodeGenCXX/x86-64-abi-sret-vs-2word-struct-param.cpp

Eric Christopher echristo at apple.com
Tue Aug 16 14:41:31 PDT 2011


Author: echristo
Date: Tue Aug 16 16:41:31 2011
New Revision: 137762

URL: http://llvm.org/viewvc/llvm-project?rev=137762&view=rev
Log:
Migrate x86-64-abi-sret-vs-2word-struct-param.cpp from
llvm/test/FrontendC++ and FileCheckize.

Added:
    cfe/trunk/test/CodeGenCXX/x86-64-abi-sret-vs-2word-struct-param.cpp

Added: cfe/trunk/test/CodeGenCXX/x86-64-abi-sret-vs-2word-struct-param.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/x86-64-abi-sret-vs-2word-struct-param.cpp?rev=137762&view=auto
==============================================================================
--- cfe/trunk/test/CodeGenCXX/x86-64-abi-sret-vs-2word-struct-param.cpp (added)
+++ cfe/trunk/test/CodeGenCXX/x86-64-abi-sret-vs-2word-struct-param.cpp Tue Aug 16 16:41:31 2011
@@ -0,0 +1,29 @@
+// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
+// XTARGET: x86
+// PR4242
+// (PR 4242 bug is on 64-bit only, test passes on x86-32 as well)
+
+struct S {
+    void* data[3];
+};
+
+struct T {
+    void* data[2];
+};
+
+// CHECK: %struct.T* byval
+extern "C" S fail(int, int, int, int, T t, void* p) {
+    S s;
+    s.data[0] = t.data[0];
+    s.data[1] = t.data[1];
+    s.data[2] = p;
+    return s;
+}
+
+// CHECK: %struct.T* byval
+extern "C" S* succeed(S* sret, int, int, int, int, T t, void* p) {
+    sret->data[0] = t.data[0];
+    sret->data[1] = t.data[1];
+    sret->data[2] = p;
+    return sret;
+}





More information about the cfe-commits mailing list