diff options
author | John McCall <rjmccall@apple.com> | 2010-02-04 01:42:13 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-02-04 01:42:13 +0000 |
commit | 1dd7383dc48718c452e71a625b29531dd96fbb9d (patch) | |
tree | f43eb9e8b73fb218ab06c2ed10f3fe5e60901343 /test/CodeGenCXX/mangle.cpp | |
parent | 40c37e1a624c27f987458a3234f615d929e9d813 (diff) |
Add mangling support for calls, sizeof/alignof, constructor calls,
float literals, and unresolved lookups (which required hand-wavey extensions).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95273 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/mangle.cpp')
-rw-r--r-- | test/CodeGenCXX/mangle.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/CodeGenCXX/mangle.cpp b/test/CodeGenCXX/mangle.cpp index b4f2a3de44..2e9afd0281 100644 --- a/test/CodeGenCXX/mangle.cpp +++ b/test/CodeGenCXX/mangle.cpp @@ -322,3 +322,38 @@ static int pr5966_i; void pr5966_bar() { pr5966_i = 0; } + +namespace test0 { + int ovl(int x); + char ovl(double x); + + template <class T> void f(T, char (&buffer)[sizeof(ovl(T()))]) {} + + void test0() { + char buffer[1]; + f(0.0, buffer); + } + // CHECK: define void @_ZN5test05test0Ev() + // CHECK: define linkonce_odr void @_ZN5test01fIdEEvT_RAszcl3ovlcvS1__EE_c( + + void test1() { + char buffer[sizeof(int)]; + f(1, buffer); + } + // CHECK: define void @_ZN5test05test1Ev() + // CHECK: define linkonce_odr void @_ZN5test01fIiEEvT_RAszcl3ovlcvS1__EE_c( + + template <class T> void g(char (&buffer)[sizeof(T() + 5.0f)]) {} + void test2() { + char buffer[sizeof(float)]; + g<float>(buffer); + } + // CHECK: define linkonce_odr void @_ZN5test01gIfEEvRAszplcvT__ELf40A00000E_c( + + template <class T> void h(char (&buffer)[sizeof(T() + 5.0)]) {} + void test3() { + char buffer[sizeof(double)]; + h<float>(buffer); + } + // CHECK: define linkonce_odr void @_ZN5test01hIfEEvRAszplcvT__ELd4014000000000000E_c( +} |