[llvm-commits] [llvm] r73874 - /llvm/trunk/test/FrontendC++/2009-06-20-DarwinPPCLayout.cpp

Dale Johannesen dalej at apple.com
Sun Jun 21 21:47:32 PDT 2009


Author: johannes
Date: Sun Jun 21 23:47:32 2009
New Revision: 73874

URL: http://llvm.org/viewvc/llvm-project?rev=73874&view=rev
Log:
Testcase for (llvm-gcc) 73873.  Usually 
std::pair<double, float*>
is 16 bytes on darwin-powerpc, but not always.
See testcase for full weirdness.


Added:
    llvm/trunk/test/FrontendC++/2009-06-20-DarwinPPCLayout.cpp

Added: llvm/trunk/test/FrontendC++/2009-06-20-DarwinPPCLayout.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/FrontendC%2B%2B/2009-06-20-DarwinPPCLayout.cpp?rev=73874&view=auto

==============================================================================
--- llvm/trunk/test/FrontendC++/2009-06-20-DarwinPPCLayout.cpp (added)
+++ llvm/trunk/test/FrontendC++/2009-06-20-DarwinPPCLayout.cpp Sun Jun 21 23:47:32 2009
@@ -0,0 +1,32 @@
+// RUN: %llvmgxx -S -m32 -emit-llvm %s -o - | grep baz | grep global | grep {struct.bar}
+// RUN: %llvmgxx -S -m32 -emit-llvm %s -o - | grep ccc | grep global | grep {struct.CC}
+// RUN: %llvmgxx -S -m32 -emit-llvm %s -o - | grep quux | grep global | grep {struct.bar}
+// RUN: %llvmgxx -S -m32 -emit-llvm %s -o - | grep foo | grep global | grep {struct.SRCFilter::FilterEntry}
+// RUN: %llvmgxx -S -m32 -emit-llvm %s -o - | grep {struct.bar} | grep {1 x i32}
+// RUN: %llvmgxx -S -m32 -emit-llvm %s -o - | grep {struct.CC} | grep {struct.bar}
+// RUN: %llvmgxx -S -m32 -emit-llvm %s -o - | grep {struct.bar} | grep {1 x i32}
+// RUN: %llvmgxx -S -m32 -emit-llvm %s -o - | grep {struct.SRCFilter::FilterEntry} | not grep {1 x i32}
+// XFAIL: *
+// XTARGET: powerpc-apple-darwin
+
+template<class _T1, class _T2>     struct payre     {
+  _T1 first;
+  _T2 second;
+  payre()       : first(), second() {    }
+};
+struct KBFP {
+  double mCutoffFrequency;
+};
+class SRCFilter {
+  struct FilterEntry: public payre<KBFP, float*>{};
+  static FilterEntry foo;
+};
+SRCFilter::FilterEntry SRCFilter::foo;    // 12 bytes
+payre<KBFP, float*> baz;                  // 16 bytes
+class CC {                                // 16 bytes
+  public: payre<KBFP, float*> x;          
+};
+class CC ccc;
+
+struct bar { KBFP x; float* y;};          // 16 bytes
+struct bar quux;





More information about the llvm-commits mailing list