reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | // RUN: %clang_cc1 -verify -fsyntax-only -Wlarge-by-value-copy=100 %s // rdar://8548050 namespace rdar8548050 { struct S100 { char x[100]; }; struct S101 { char x[101]; }; S100 f100(S100 s) { return s; } S101 f101(S101 s) { return s; } // expected-warning {{return value of 'f101' is a large (101 bytes) pass-by-value object}} \ // expected-warning {{'s' is a large (101 bytes) pass-by-value argument}} typedef int Arr[200]; void farr(Arr a) { } struct NonPOD { char x[200]; virtual void m(); }; NonPOD fNonPOD(NonPOD s) { return s; } template <unsigned size> struct TS { char x[size]; }; template <unsigned size> void tf(TS<size> ts) {} // expected-warning {{ts' is a large (300 bytes) pass-by-value argument}} void g() { TS<300> ts; tf<300>(ts); // expected-note {{instantiation}} } } template<typename T> class DependentPOD { enum b { x }; b foo() { return x; } }; |