diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2009-09-14 20:41:01 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2009-09-14 20:41:01 +0000 |
commit | f4061e39a38cdd113eda7f0023eefca1ccdcdfe1 (patch) | |
tree | 80cfd555a06ff5c46d858bb44a2824f43067fb0f /clang/test/CodeGenCXX/conversion-function.cpp | |
parent | 37a118520cd980a58113c051a326e7debaf1e865 (diff) | |
download | bcm5719-llvm-f4061e39a38cdd113eda7f0023eefca1ccdcdfe1.tar.gz bcm5719-llvm-f4061e39a38cdd113eda7f0023eefca1ccdcdfe1.zip |
Used visible conversion function api to do overload
resolution of type conversion functions in base and
current class.
llvm-svn: 81784
Diffstat (limited to 'clang/test/CodeGenCXX/conversion-function.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/conversion-function.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/conversion-function.cpp b/clang/test/CodeGenCXX/conversion-function.cpp index 0d21180530d..e5f303cbaee 100644 --- a/clang/test/CodeGenCXX/conversion-function.cpp +++ b/clang/test/CodeGenCXX/conversion-function.cpp @@ -77,12 +77,31 @@ int main() { g(o1, o2); } +// Test. Conversion in base class is visible in derived class. +class XB { +public: + operator int(); +}; + +class Yb : public XB { +public: + operator char(); +}; + +void f(Yb& a) { + int i = a; // OK. calls XB::operator int(); + char ch = a; // OK. calls Yb::operator char(); +} + + // CHECK-LP64: .globl __ZN1ScviEv // CHECK-LP64-NEXT: __ZN1ScviEv: // CHECK-LP64: call __ZN1Ycv1ZEv // CHECK-LP64: call __ZN1Zcv1XEv // CHECK-LP64: call __ZN1XcviEv // CHECK-LP64: call __ZN1XcvfEv +// CHECK-LP64: call __ZN2XBcviEv +// CHECK-LP64: call __ZN2YbcvcEv // CHECK-LP32: .globl __ZN1ScviEv // CHECK-LP32-NEXT: __ZN1ScviEv: @@ -90,3 +109,5 @@ int main() { // CHECK-LP32: call L__ZN1Zcv1XEv // CHECK-LP32: call L__ZN1XcviEv // CHECK-LP32: call L__ZN1XcvfEv +// CHECK-LP32: call L__ZN2XBcviEv +// CHECK-LP32: call L__ZN2YbcvcEv |