aboutsummaryrefslogtreecommitdiff
path: root/clang/test/CodeGenCXX/member-function-pointers.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2011-03-15 21:17:48 +0000
committerJohn McCall <rjmccall@apple.com>2011-03-15 21:17:48 +0000
commit2de87f67e5296f6857c5295023018ce33a7d7cae (patch)
tree2204061b46488a83566b036b7c0c13468fdc640b /clang/test/CodeGenCXX/member-function-pointers.cpp
parentc17003c66b43cc0324398d736afe9f0afe8d31a9 (diff)
downloadllvm-2de87f67e5296f6857c5295023018ce33a7d7cae.zip
llvm-2de87f67e5296f6857c5295023018ce33a7d7cae.tar.gz
llvm-2de87f67e5296f6857c5295023018ce33a7d7cae.tar.bz2
Reorganize the emission of (unfoldable) constant casts a bit, and
make sure that upcasts of member pointer types are covered as constants. Fixed rdar://problem/9130221 llvm-svn: 127702
Diffstat (limited to 'clang/test/CodeGenCXX/member-function-pointers.cpp')
-rw-r--r--clang/test/CodeGenCXX/member-function-pointers.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/member-function-pointers.cpp b/clang/test/CodeGenCXX/member-function-pointers.cpp
index 78a571e1..011e9cd 100644
--- a/clang/test/CodeGenCXX/member-function-pointers.cpp
+++ b/clang/test/CodeGenCXX/member-function-pointers.cpp
@@ -209,3 +209,26 @@ namespace test8 {
return pmf();
}
}
+
+namespace test9 {
+ struct A {
+ void foo();
+ };
+ struct B : A {
+ void foo();
+ };
+
+ typedef void (A::*fooptr)();
+
+ struct S {
+ fooptr p;
+ };
+
+ // CHECK: define void @_ZN5test94testEv(
+ // CHECK: alloca i32
+ // CHECK-NEXT: ret void
+ void test() {
+ int x;
+ static S array[] = { (fooptr) &B::foo };
+ }
+}