diff options
| author | Douglas Gregor <dgregor@apple.com> | 2009-12-12 07:57:52 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2009-12-12 07:57:52 +0000 |
| commit | fab31f47b25d78dfd19dc08a7ad399936c6fbf49 (patch) | |
| tree | d3c257911c8d9697ba13ecfa9def8d62c874ddd2 /clang/test/SemaCXX/vararg-non-pod.cpp | |
| parent | c2744f5adda44de6a728204a3634cff6ab7cc674 (diff) | |
| download | bcm5719-llvm-fab31f47b25d78dfd19dc08a7ad399936c6fbf49.tar.gz bcm5719-llvm-fab31f47b25d78dfd19dc08a7ad399936c6fbf49.zip | |
When certain diagnostics involving run-time behavior would be emitted
in a potentially potentially evaluated context, queue those
diagnostics and only emit them if the context ends up being
potentially evaluated. This completes the fix for PR5761.
llvm-svn: 91213
Diffstat (limited to 'clang/test/SemaCXX/vararg-non-pod.cpp')
| -rw-r--r-- | clang/test/SemaCXX/vararg-non-pod.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/vararg-non-pod.cpp b/clang/test/SemaCXX/vararg-non-pod.cpp index db519d71611..f913531a27d 100644 --- a/clang/test/SemaCXX/vararg-non-pod.cpp +++ b/clang/test/SemaCXX/vararg-non-pod.cpp @@ -75,3 +75,16 @@ class Foo { int Helper(...); const int size = sizeof(Helper(Foo())); + +namespace std { + class type_info { }; +} + +struct Base { virtual ~Base(); }; +Base &get_base(...); +int eat_base(...); + +void test_typeid(Base &base) { + (void)typeid(get_base(base)); // expected-warning{{cannot pass object of non-POD type 'struct Base' through variadic function; call will abort at runtime}} + (void)typeid(eat_base(base)); // okay +} |

