forked from OSchip/llvm-project
Migrate, FileCheckize and update:
2003-11-02-WeakLinkage.cpp 2003-11-18-PtrMemConstantInitializer.cpp 2003-11-25-ReturningOpaqueByValue.cpp 2003-11-27-MultipleInheritanceThunk.cpp 2003-11-29-DuplicatedCleanupTest.cpp 2003-12-08-ArrayOfPtrToMemberFunc.cpp 2004-01-11-DynamicInitializedConstant.cpp from llvm/test/FrontendC++. llvm-svn: 138162
This commit is contained in:
parent
20f19d1d02
commit
aab7dffa12
|
@ -0,0 +1,13 @@
|
|||
// RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s
|
||||
// The template should compile to linkonce linkage, not weak linkage.
|
||||
|
||||
// CHECK-NOT: weak
|
||||
template<class T>
|
||||
void thefunc();
|
||||
|
||||
template<class T>
|
||||
inline void thefunc() {}
|
||||
|
||||
void test() {
|
||||
thefunc<int>();
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
// RUN: %clang_cc1 -emit-llvm %s -o -
|
||||
|
||||
struct Gfx {
|
||||
void opMoveSetShowText();
|
||||
};
|
||||
|
||||
struct Operator {
|
||||
void (Gfx::*func)();
|
||||
};
|
||||
|
||||
Operator opTab[] = {
|
||||
{&Gfx::opMoveSetShowText},
|
||||
};
|
|
@ -0,0 +1,11 @@
|
|||
// RUN: %clang_cc1 -emit-llvm %s -o -
|
||||
|
||||
#include <vector>
|
||||
std::vector<int> my_method ();
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
my_method ();
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
// RUN: %clang_cc1 -emit-llvm %s -o -
|
||||
|
||||
|
||||
struct CallSite {
|
||||
int X;
|
||||
|
||||
CallSite(const CallSite &CS);
|
||||
};
|
||||
|
||||
struct AliasAnalysis {
|
||||
int TD;
|
||||
|
||||
virtual int getModRefInfo(CallSite CS);
|
||||
};
|
||||
|
||||
|
||||
struct Pass {
|
||||
int X;
|
||||
virtual int foo();
|
||||
};
|
||||
|
||||
struct AliasAnalysisCounter : public Pass, public AliasAnalysis {
|
||||
int getModRefInfo(CallSite CS) {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
AliasAnalysisCounter AAC;
|
|
@ -0,0 +1,41 @@
|
|||
// RUN: %clang_cc1 -emit-llvm %s -o -
|
||||
|
||||
|
||||
void doesntThrow() throw();
|
||||
struct F {
|
||||
~F() { doesntThrow(); }
|
||||
};
|
||||
|
||||
void atest() {
|
||||
F A;
|
||||
lab:
|
||||
F B;
|
||||
goto lab;
|
||||
}
|
||||
|
||||
void test(int val) {
|
||||
label: {
|
||||
F A;
|
||||
F B;
|
||||
if (val == 0) goto label;
|
||||
if (val == 1) goto label;
|
||||
}
|
||||
}
|
||||
|
||||
void test3(int val) {
|
||||
label: {
|
||||
F A;
|
||||
F B;
|
||||
if (val == 0) { doesntThrow(); goto label; }
|
||||
if (val == 1) { doesntThrow(); goto label; }
|
||||
}
|
||||
}
|
||||
|
||||
void test4(int val) {
|
||||
label: {
|
||||
F A;
|
||||
F B;
|
||||
if (val == 0) { F C; goto label; }
|
||||
if (val == 1) { F D; goto label; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
// RUN: %clang_cc1 -emit-llvm %s -o -
|
||||
|
||||
struct Evil {
|
||||
void fun ();
|
||||
};
|
||||
int foo();
|
||||
typedef void (Evil::*memfunptr) ();
|
||||
static memfunptr jumpTable[] = { &Evil::fun };
|
||||
|
||||
void Evil::fun() {
|
||||
(this->*jumpTable[foo()]) ();
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
// RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s
|
||||
|
||||
// CHECK-NOT: constant
|
||||
extern int X;
|
||||
const int Y = X;
|
||||
const int* foo() { return &Y; }
|
Loading…
Reference in New Issue