diff options
author | John McCall <rjmccall@apple.com> | 2011-03-15 21:17:48 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2011-03-15 21:17:48 +0000 |
commit | 2de87f67e5296f6857c5295023018ce33a7d7cae (patch) | |
tree | 2204061b46488a83566b036b7c0c13468fdc640b /clang/test/CodeGenCXX/member-function-pointers.cpp | |
parent | c17003c66b43cc0324398d736afe9f0afe8d31a9 (diff) | |
download | llvm-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.cpp | 23 |
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 }; + } +} |