r195626 - Tests for core issues 270-300.
Richard Smith
richard at metafoo.co.uk
Mon Nov 25 15:38:25 PST 2013
This was fixed in r195673. It failed on targets where size_t was
'unsigned'. Sorry for breaking you!
On Mon, Nov 25, 2013 at 1:45 AM, Renato Golin <renato.golin at linaro.org>wrote:
> Hi Richard,
>
> Not sure what the error is, or why it's only failing on our bots...
>
>
> http://lab.llvm.org:8011/builders/clang-native-arm-cortex-a9/builds/13642/steps/check-all/logs/Clang%3A%3Adr2xx.cpp
>
> cheers,
> --renato
>
>
> On 25 November 2013 08:07, Richard Smith <richard-llvm at metafoo.co.uk>wrote:
>
>> Author: rsmith
>> Date: Mon Nov 25 02:07:41 2013
>> New Revision: 195626
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=195626&view=rev
>> Log:
>> Tests for core issues 270-300.
>>
>> Added:
>> cfe/trunk/test/CXX/drs/dr3xx.cpp
>> Modified:
>> cfe/trunk/test/CXX/drs/dr2xx.cpp
>> cfe/trunk/www/cxx_dr_status.html
>>
>> Modified: cfe/trunk/test/CXX/drs/dr2xx.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/drs/dr2xx.cpp?rev=195626&r1=195625&r2=195626&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/CXX/drs/dr2xx.cpp (original)
>> +++ cfe/trunk/test/CXX/drs/dr2xx.cpp Mon Nov 25 02:07:41 2013
>> @@ -3,7 +3,7 @@
>> // RUN: %clang_cc1 -std=c++1y %s -verify -fexceptions -fcxx-exceptions
>> -pedantic-errors
>>
>> // PR13819 -- __SIZE_TYPE__ is incompatible.
>> -// REQUIRES: LP64
>> +typedef __SIZE_TYPE__ size_t; // expected-warning 0-1 {{extension}}
>>
>> #if __cplusplus < 201103L
>> #define fold(x) (__builtin_constant_p(x) ? (x) : (x))
>> @@ -559,14 +559,14 @@ namespace dr252 { // dr252: yes
>>
>> struct F {
>> // If both functions are available, the first one is a placement
>> delete.
>> - void operator delete(void*, __SIZE_TYPE__);
>> + void operator delete(void*, size_t);
>> void operator delete(void*) = delete; // expected-error
>> 0-1{{extension}} expected-note {{here}}
>> virtual ~F();
>> };
>> F::~F() {} // expected-error {{deleted}}
>>
>> struct G {
>> - void operator delete(void*, __SIZE_TYPE__);
>> + void operator delete(void*, size_t);
>> virtual ~G();
>> };
>> G::~G() {}
>> @@ -674,7 +674,7 @@ namespace dr261 { // dr261: no
>> // translation unit.
>> // We're also missing the -Wused-but-marked-unused diagnostic here.
>> struct A {
>> - inline void *operator new(__SIZE_TYPE__) __attribute__((unused));
>> + inline void *operator new(size_t) __attribute__((unused));
>> inline void operator delete(void*) __attribute__((unused));
>> A() {}
>> };
>> @@ -724,3 +724,288 @@ namespace dr263 { // dr263: yes
>> // dr266: na
>> // dr269: na
>> // dr270: na
>> +
>> +namespace dr272 { // dr272: yes
>> + struct X {
>> + void f() {
>> + this->~X();
>> + X::~X();
>> + ~X(); // expected-error {{unary expression}}
>> + }
>> + };
>> +}
>> +
>> +#include <stdarg.h>
>> +#include <stddef.h>
>> +namespace dr273 { // dr273: yes
>> + struct A {
>> + int n;
>> + };
>> + void operator&(A);
>> + void f(A a, ...) {
>> + offsetof(A, n);
>> + va_list val;
>> + va_start(val, a);
>> + va_end(val);
>> + }
>> +}
>> +
>> +// dr274: na
>> +
>> +namespace dr275 { // dr275: no
>> + namespace N {
>> + template <class T> void f(T) {} // expected-note 1-4{{here}}
>> + template <class T> void g(T) {} // expected-note {{candidate}}
>> + template <> void f(int);
>> + template <> void f(char);
>> + template <> void f(double);
>> + template <> void g(char);
>> + }
>> +
>> + using namespace N;
>> +
>> + namespace M {
>> + template <> void N::f(char) {} // expected-error {{'M' does not
>> enclose namespace 'N'}}
>> + template <class T> void g(T) {}
>> + template <> void g(char) {}
>> + template void f(long);
>> +#if __cplusplus >= 201103L
>> + // FIXME: this should be rejected in c++98 too
>> + // expected-error at -3 {{must occur in namespace 'N'}}
>> +#endif
>> + template void N::f(unsigned long);
>> +#if __cplusplus >= 201103L
>> + // FIXME: this should be rejected in c++98 too
>> + // expected-error at -3 {{not in a namespace enclosing 'N'}}
>> +#endif
>> + template void h(long); // expected-error {{does not refer to a
>> function template}}
>> + template <> void f(double) {} // expected-error {{no function
>> template matches}}
>> + }
>> +
>> + template <class T> void g(T) {} // expected-note {{candidate}}
>> +
>> + template <> void N::f(char) {}
>> + template <> void f(int) {} // expected-error {{no function template
>> matches}}
>> +
>> + template void f(short);
>> +#if __cplusplus >= 201103L
>> + // FIXME: this should be rejected in c++98 too
>> + // expected-error at -3 {{must occur in namespace 'N'}}
>> +#endif
>> + template void N::f(unsigned short);
>> +
>> + // FIXME: this should probably be valid. the wording from the issue
>> + // doesn't clarify this, but it follows from the usual rules.
>> + template void g(int); // expected-error {{ambiguous}}
>> +
>> + // FIXME: likewise, this should also be valid.
>> + template<typename T> void f(T) {} // expected-note {{candidate}}
>> + template void f(short); // expected-error {{ambiguous}}
>> +}
>> +
>> +// dr276: na
>> +
>> +namespace dr277 { // dr277: yes
>> + typedef int *intp;
>> + int *p = intp();
>> + int a[fold(intp() ? -1 : 1)];
>> +}
>> +
>> +namespace dr280 { // dr280: yes
>> + typedef void f0();
>> + typedef void f1(int);
>> + typedef void f2(int, int);
>> + typedef void f3(int, int, int);
>> + struct A {
>> + operator f1*(); // expected-note {{here}} expected-note {{candidate}}
>> + operator f2*();
>> + };
>> + struct B {
>> + operator f0*(); // expected-note {{candidate}}
>> + private:
>> + operator f3*(); // expected-note {{here}} expected-note {{candidate}}
>> + };
>> + struct C {
>> + operator f0*(); // expected-note {{candidate}}
>> + operator f1*(); // expected-note {{candidate}}
>> + operator f2*(); // expected-note {{candidate}}
>> + operator f3*(); // expected-note {{candidate}}
>> + };
>> + struct D : private A, B { // expected-note 2{{here}}
>> + operator f2*(); // expected-note {{candidate}}
>> + } d;
>> + struct E : C, D {} e;
>> + void g() {
>> + d(); // ok, public
>> + d(0); // expected-error {{private member of 'dr280::A'}}
>> expected-error {{private base class 'dr280::A'}}
>> + d(0, 0); // ok, suppressed by member in D
>> + d(0, 0, 0); // expected-error {{private member of 'dr280::B'}}
>> + e(); // expected-error {{ambiguous}}
>> + e(0); // expected-error {{ambiguous}}
>> + e(0, 0); // expected-error {{ambiguous}}
>> + e(0, 0, 0); // expected-error {{ambiguous}}
>> + }
>> +}
>> +
>> +namespace dr281 { // dr281: no
>> + void a();
>> + inline void b();
>> +
>> + void d();
>> + inline void e();
>> +
>> + struct S {
>> + friend inline void a(); // FIXME: ill-formed
>> + friend inline void b();
>> + friend inline void c(); // FIXME: ill-formed
>> + friend inline void d() {}
>> + friend inline void e() {}
>> + friend inline void f() {}
>> + };
>> +}
>> +
>> +namespace dr283 { // dr283: yes
>> + template<typename T> // expected-note 2{{here}}
>> + struct S {
>> + friend class T; // expected-error {{shadows}}
>> + class T; // expected-error {{shadows}}
>> + };
>> +}
>> +
>> +namespace dr284 { // dr284: no
>> + namespace A {
>> + struct X;
>> + enum Y {};
>> + class Z {};
>> + }
>> + namespace B {
>> + struct W;
>> + using A::X;
>> + using A::Y;
>> + using A::Z;
>> + }
>> + struct B::V {}; // expected-error {{no struct named 'V'}}
>> + struct B::W {};
>> + struct B::X {}; // FIXME: ill-formed
>> + enum B::Y e; // ok per dr417
>> + class B::Z z; // ok per dr417
>> +
>> + struct C {
>> + struct X;
>> + enum Y {};
>> + class Z {};
>> + };
>> + struct D : C {
>> + struct W;
>> + using C::X;
>> + using C::Y;
>> + using C::Z;
>> + };
>> + struct D::V {}; // expected-error {{no struct named 'V'}}
>> + struct D::W {};
>> + struct D::X {}; // FIXME: ill-formed
>> + enum D::Y e2; // ok per dr417
>> + class D::Z z2; // ok per dr417
>> +}
>> +
>> +namespace dr285 { // dr285: yes
>> + template<typename T> void f(T, int); // expected-note {{match}}
>> + template<typename T> void f(int, T); // expected-note {{match}}
>> + template<> void f<int>(int, int) {} // expected-error {{ambiguous}}
>> +}
>> +
>> +namespace dr286 { // dr286: yes
>> + template<class T> struct A {
>> + class C {
>> + template<class T2> struct B {}; // expected-note {{here}}
>> + };
>> + };
>> +
>> + template<class T>
>> + template<class T2>
>> + struct A<T>::C::B<T2*> { };
>> +
>> + A<short>::C::B<int*> absip; // expected-error {{private}}
>> +}
>> +
>> +// dr288: na
>> +
>> +namespace dr289 { // dr289: yes
>> + struct A; // expected-note {{forward}}
>> + struct B : A {}; // expected-error {{incomplete}}
>> +
>> + template<typename T> struct C { typename T::error error; }; //
>> expected-error {{cannot be used prior to '::'}}
>> + struct D : C<int> {}; // expected-note {{instantiation}}
>> +}
>> +
>> +// dr290: na
>> +// dr291: dup 391
>> +// dr292 FIXME: write a codegen test
>> +
>> +namespace dr294 { // dr294: no
>> + void f() throw(int);
>> + int main() {
>> + // FIXME: we reject this for the wrong reason, because we don't
>> implement
>> + // dr87 yet.
>> + (void)static_cast<void (*)() throw()>(f); // expected-error {{not
>> superset}}
>> + void (*p)() throw() = f; // expected-error {{not superset}}
>> +
>> + (void)static_cast<void (*)() throw(int)>(f); // FIXME: ill-formed
>> + }
>> +}
>> +
>> +namespace dr295 { // dr295: no
>> + typedef int f();
>> + // FIXME: This warning is incorrect.
>> + const f g; // expected-warning {{unspecified behavior}}
>> + const f &r = g; // expected-warning {{unspecified behavior}}
>> + template<typename T> struct X {
>> + const T &f;
>> + };
>> + X<f> x = {g}; // FIXME: expected-error {{drops qualifiers}}
>> +}
>> +
>> +namespace dr296 { // dr296: yes
>> + struct A {
>> + static operator int() { return 0; } // expected-error {{static}}
>> + };
>> +}
>> +
>> +namespace dr298 { // dr298: yes
>> + struct A {
>> + typedef int type;
>> + A();
>> + ~A();
>> + };
>> + typedef A B; // expected-note {{here}}
>> + typedef const A C; // expected-note {{here}}
>> +
>> + A::type i1;
>> + B::type i2;
>> + C::type i3;
>> +
>> + struct A a;
>> + struct B b; // expected-error {{refers to a typedef}}
>> + struct C c; // expected-error {{refers to a typedef}}
>> +
>> + B::B() {} // expected-error {{requires a type specifier}}
>> + B::A() {} // ok
>> + C::~C() {} // expected-error {{expected the class name}}
>> + C::~A() {} // ok
>> +
>> + typedef struct D E; // expected-note {{here}}
>> + struct E {}; // expected-error {{conflicts with typedef}}
>> +}
>> +
>> +namespace dr299 { // dr299: yes c++11
>> + struct S {
>> + operator int();
>> + };
>> + struct T {
>> + operator int(); // expected-note {{}}
>> + operator unsigned(); // expected-note {{}}
>> + };
>> + // FIXME: should this apply to c++98 mode?
>> + int *p = new int[S()]; // expected-error 0-1{{extension}}
>> + int *q = new int[T()]; // expected-error {{ambiguous}}
>> +}
>>
>> Added: cfe/trunk/test/CXX/drs/dr3xx.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/drs/dr3xx.cpp?rev=195626&view=auto
>>
>> ==============================================================================
>> --- cfe/trunk/test/CXX/drs/dr3xx.cpp (added)
>> +++ cfe/trunk/test/CXX/drs/dr3xx.cpp Mon Nov 25 02:07:41 2013
>> @@ -0,0 +1,11 @@
>> +// RUN: %clang_cc1 -std=c++98 %s -verify -fexceptions -fcxx-exceptions
>> -pedantic-errors
>> +// RUN: %clang_cc1 -std=c++11 %s -verify -fexceptions -fcxx-exceptions
>> -pedantic-errors
>> +// RUN: %clang_cc1 -std=c++1y %s -verify -fexceptions -fcxx-exceptions
>> -pedantic-errors
>> +
>> +namespace dr300 { // dr300: yes
>> + template<typename R, typename A> void f(R (&)(A)) {}
>> + int g(int);
>> + void h() { f(g); }
>> +}
>> +
>> +// expected-no-diagnostics
>>
>> Modified: cfe/trunk/www/cxx_dr_status.html
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/www/cxx_dr_status.html?rev=195626&r1=195625&r2=195626&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/www/cxx_dr_status.html (original)
>> +++ cfe/trunk/www/cxx_dr_status.html Mon Nov 25 02:07:41 2013
>> @@ -1672,37 +1672,37 @@ of class templates</td>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#272
>> ">272</a></td>
>> <td>CD1</td>
>> <td>Explicit destructor invocation and <I>qualified-id</I>s</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="full" align="center">Yes</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#273
>> ">273</a></td>
>> <td>CD1</td>
>> <td>POD classes and <TT>operator&()</TT></td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="full" align="center">Yes</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#274
>> ">274</a></td>
>> <td>CD1</td>
>> <td>Cv-qualification and char-alias access to out-of-lifetime
>> objects</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="na" align="center">N/A</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#275
>> ">275</a></td>
>> <td>CD1</td>
>> <td>Explicit instantiation/specialization and
>> <I>using-directive</I>s</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="none" align="center">No</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#276
>> ">276</a></td>
>> <td>CD1</td>
>> <td>Order of destruction of parameters and temporaries</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="na" align="center">N/A</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#277
>> ">277</a></td>
>> <td>CD1</td>
>> <td>Zero-initialization of pointers</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="full" align="center">Yes</td>
>> </tr>
>> <tr class="open">
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#278
>> ">278</a></td>
>> @@ -1720,13 +1720,13 @@ of class templates</td>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#280
>> ">280</a></td>
>> <td>CD1</td>
>> <td>Access and surrogate call functions</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="full" align="center">Yes</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#281
>> ">281</a></td>
>> <td>CD1</td>
>> <td><TT>inline</TT> specifier in <TT>friend</TT> declarations</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="none" align="center">No</td>
>> </tr>
>> <tr class="open">
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#282
>> ">282</a></td>
>> @@ -1738,25 +1738,25 @@ of class templates</td>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#283
>> ">283</a></td>
>> <td>CD1</td>
>> <td>Template <I>type-parameter</I>s are not syntactically
>> <I>type-name</I>s</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="full" align="center">Yes</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#284
>> ">284</a></td>
>> <td>CD1</td>
>> <td><I>qualified-id</I>s in class declarations</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="none" align="center">No</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#285
>> ">285</a></td>
>> <td>NAD</td>
>> <td>Identifying a function template being specialized</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="full" align="center">Yes</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#286
>> ">286</a></td>
>> <td>CD1</td>
>> <td>Incorrect example in partial specialization</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="full" align="center">Yes</td>
>> </tr>
>> <tr class="open">
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#287
>> ">287</a></td>
>> @@ -1768,25 +1768,25 @@ of class templates</td>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#288
>> ">288</a></td>
>> <td>CD1</td>
>> <td>Misuse of "static type" in describing pointers</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="na" align="center">N/A</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#289
>> ">289</a></td>
>> <td>CD1</td>
>> <td>Incomplete list of contexts requiring a complete type</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="full" align="center">Yes</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#290
>> ">290</a></td>
>> <td>NAD</td>
>> <td>Should memcpy be allowed into a POD with a const member?</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="na" align="center">N/A</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#291
>> ">291</a></td>
>> <td>CD1</td>
>> <td>Overload resolution needed when binding reference to class
>> rvalue</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="none" align="center">Duplicate of 391</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#292
>> ">292</a></td>
>> @@ -1804,19 +1804,19 @@ of class templates</td>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#294
>> ">294</a></td>
>> <td>NAD</td>
>> <td>Can <TT>static_cast</TT> drop exception specifications?</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="none" align="center">No</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#295
>> ">295</a></td>
>> <td>CD1</td>
>> <td>cv-qualifiers on function types</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="none" align="center">No</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#296
>> ">296</a></td>
>> <td>CD1</td>
>> <td>Can conversion functions be static?</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="full" align="center">Yes</td>
>> </tr>
>> <tr class="open">
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#297
>> ">297</a></td>
>> @@ -1828,19 +1828,19 @@ of class templates</td>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#298
>> ">298</a></td>
>> <td>CD1</td>
>> <td><TT>T::x</TT> when <TT>T</TT> is cv-qualified</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="full" align="center">Yes</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#299
>> ">299</a></td>
>> <td>CD1</td>
>> <td>Conversion on array bound expression in <TT>new</TT></td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="full" align="center">Yes (C++11 onwards)</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#300
>> ">300</a></td>
>> <td>CD1</td>
>> <td>References to functions in template argument deduction</td>
>> - <td class="none" align="center">Unknown</td>
>> + <td class="full" align="center">Yes</td>
>> </tr>
>> <tr>
>> <td><a href="
>> http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#301
>> ">301</a></td>
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131125/7e2f62d4/attachment.html>
More information about the cfe-commits
mailing list