OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/gnu-src/gcc-4.2.2/gcc/testsuite/g++.dg/debug
    from Rev 149 to Rev 154
    Reverse comparison

Rev 149 → Rev 154

/debug.exp
0,0 → 1,30
# Copyright (C) 2002, 2007 Free Software Foundation, Inc.
 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
 
# G++ testsuite that uses the `dg.exp' driver.
 
# Load support procs.
load_lib g++-dg.exp
 
# Initialize `dg'.
dg-init
 
# Main loop.
gcc-dg-debug-runtest g++_target_compile trivial.C [list -O2 -O3] \
[lsort [glob -nocomplain $srcdir/$subdir/*.C]]
 
# All done.
dg-finish
/minimal1.C
0,0 → 1,7
// PR debug/6387
// Verify that -g1 works with local class member functions.
 
void foo();
void bar() {
struct A { A() { foo(); } } a;
}
minimal1.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: debug1.C =================================================================== --- debug1.C (nonexistent) +++ debug1.C (revision 154) @@ -0,0 +1,48 @@ +// Test whether dwarf2 debug info works with named return value optimization +// { dg-do compile } + +struct S +{ + virtual ~S(); + S (const char *str); + S& operator= (const char *str); + operator const char *() const; + S& operator+= (const char *str); +}; +inline S operator+ (const char *s1, const S &s2) +{ + S x (s1); + x += s2; + return x; +} +struct U +{ + U (); + U& operator= (const char *); + const char *foo() const; + operator const char *() const { return foo(); } +}; +template struct V +{ + T v; +}; +template struct W +{ + V *w; + W() : w (0) {} + const T& operator* () const { return w->v; } + T& operator* () { return w->v; } +}; +struct X { + X(); +}; +struct Y { + Y (const U &u); +}; +X::X() +{ + W a; + U b; + b = (*a) + "xx"; + Y c (b); +}
debug1.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: static1.C =================================================================== --- static1.C (nonexistent) +++ static1.C (revision 154) @@ -0,0 +1,16 @@ +// PR c++/24569 + +template +struct S +{ + static const int u = 2 * dim; + static const int p[u]; + static int f(); +}; + +template <> +inline int S<3>::f () { return 1; } + +template const int S::u; + +template class S<3>;
static1.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: debug2.C =================================================================== --- debug2.C (nonexistent) +++ debug2.C (revision 154) @@ -0,0 +1,42 @@ +/* Verify that sched re-inserts needed scopes properly. */ +/* { dg-do compile } */ +/* { dg-options "-mcpu=ev5" { target alpha*-*-* } } */ + +template +inline void foo() +{ + void (T::*x)() __attribute__ ((__unused__)) = &T::bar; +} + +template +struct D +{ + void bar() { + } + T i; +}; + +template +struct E +{ + void bar() { + foo > (); + *i-- = *i; + } + T i; +}; + +struct A {}; +template struct B { typedef typename T::t t; }; +template struct B { typedef T& t; }; +template +struct C +{ + T b; + explicit C (const T& i) : b (i) { } + typename B::t operator* () const { return *b; } + C operator-- (int) { return C (b--); } +}; + +template void foo > > (); +template void foo > > ();
debug2.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: debug3.C =================================================================== --- debug3.C (nonexistent) +++ debug3.C (revision 154) @@ -0,0 +1,47 @@ +// PR optimization/5547 +// This testcase caused ICE on IA-32, since DWARF-2 was unable +// to emit location expression for parameter a of operator+. +// { dg-do compile { target fpic } } +// { dg-options "-fpic" } + +struct A { char *s; }; + +inline A operator+ (char a, const A &b) +{ + A s; + s.s = new char[12]; + s.s[0] = a; + return s; +} + +int b (const A &); + +void test1 (const A &x, int y) +{ + int j = b ("012345"[y] + x); + for (int i = 0; i < y; i++); +} + +void test2 (const A &x, int y) +{ + int j = b ("012345678"[y + 2] + x); + for (int i = 0; i < y; i++); +} + +void test3 (const A &x, int y) +{ + int j = b ("012345678"[y - 6] + x); + for (int i = 0; i < y; i++); +} + +void test4 (const A &x, int y) +{ + int j = b ("012345678"[2 * y - 10] + x); + for (int i = 0; i < y; i++); +} + +void test5 (const A &x, int y) +{ + int j = b ("012345678"[4 * y] + x); + for (int i = 0; i < y; i++); +}
debug3.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: debug4.C =================================================================== --- debug4.C (nonexistent) +++ debug4.C (revision 154) @@ -0,0 +1,17 @@ +/* PR debug/5770 + This testcase failed at -O -g because the following constants + were optimized away since they were never referenced, but + since they are variables with initializers, rtl_for_decl_location + run expand_expr on their initializers and returned it. + This lead to references to constants which were deferred and thus + never emitted. */ +/* { dg-do link } */ + +static const char foo[] = "foo string"; +static const char bar[30] = "bar string"; +static const wchar_t baz[] = L"baz string"; + +int +main () +{ +}
debug4.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: trivial.C =================================================================== --- trivial.C (nonexistent) +++ trivial.C (revision 154) @@ -0,0 +1,6 @@ +/* { dg-do run } */ + +int main(void) +{ + return 0; +}
trivial.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: debug5.C =================================================================== --- debug5.C (nonexistent) +++ debug5.C (revision 154) @@ -0,0 +1,10 @@ +// { dg-do compile } + +int foo() +{ + int a = 1; + int b = 1; + int e[a][b]; + e[0][0] = 0; + return e[a-1][b-1]; +}
debug5.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: debug6.C =================================================================== --- debug6.C (nonexistent) +++ debug6.C (revision 154) @@ -0,0 +1,7 @@ +// { dg-do compile } + +void foo() +{ + int i=1, x[i]; +} +
debug6.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: debug7.C =================================================================== --- debug7.C (nonexistent) +++ debug7.C (revision 154) @@ -0,0 +1,18 @@ +// { dg-do compile } + +void f (int); + +int +main() { + + int a = 4; + int b = 5; + int (*x)[b] = new int[a][b]; // { dg-error "" } + + x[2][1] = 7; + + for (int i = 0; i < a; ++i) + for (int j = 0; j < b; ++j) + f (x[i][j]); + delete [] x; +}
debug7.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: namespace1.C =================================================================== --- namespace1.C (nonexistent) +++ namespace1.C (revision 154) @@ -0,0 +1,258 @@ +/* Test DWARF namespace support. + This test case is based on GDB testsuite test case. */ +/* { dg-do compile } */ + +namespace AAA { + char c; + int i; + int A_xyzq (int); + char xyzq (char); + class inA { + public: + int xx; + int fum (int); + }; +}; + +int AAA::inA::fum (int i) +{ + return 10 + i; +} + +namespace BBB { + char c; + int i; + int B_xyzq (int); + char xyzq (char); + + namespace CCC { + char xyzq (char); + }; + + class Klasse { + public: + char xyzq (char); + int dummy; + }; +}; + +int AAA::A_xyzq (int x) +{ + return 2 * x; +} + +char AAA::xyzq (char c) +{ + return 'a'; +} + + +int BBB::B_xyzq (int x) +{ + return 3 * x; +} + +char BBB::xyzq (char c) +{ + return 'b'; +} + +char BBB::CCC::xyzq (char c) +{ + return 'z'; +} + +char BBB::Klasse::xyzq (char c) +{ + return 'o'; +} + +void marker1(void) +{ + return; +} + +namespace +{ + int X = 9; + + namespace G + { + int Xg = 10; + + namespace + { + int XgX = 11; + } + } +} + +namespace H +{ + int h = 14; +} + +namespace I = H; + +namespace J +{ + int j = 15; +} + +using namespace J; + +namespace K +{ + int k = 16; +} + +namespace L +{ + using namespace K; +} + +namespace O +{ + int o = 18; +} + +namespace P +{ + using namespace O; +} + +namespace Q +{ + using namespace P; +} + +namespace R +{ + int r1 = 19; + int r2 = 20; +} + +using R::r1; + +namespace C +{ + int c = 1; + int shadow = 12; + + class CClass { + public: + int x; + class NestedClass { + public: + int y; + }; + }; + + namespace + { + int cX = 6; + + namespace F + { + int cXf = 7; + + namespace + { + int cXfX = 8; + } + } + } + + namespace C + { + int cc = 2; + } + + namespace E + { + int ce = 4; + } + + namespace D + { + int cd = 3; + int shadow = 13; + + namespace E + { + int cde = 5; + } + + namespace M + { + int cdm = 17; + } + + using namespace M; + + void marker2 (void) + { + // NOTE: carlton/2003-04-23: I'm listing the expressions that I + // plan to have GDB try to print out, just to make sure that the + // compiler and I agree which ones should be legal! It's easy + // to screw up when testing the boundaries of namespace stuff. + c; + //cc; + C::cc; + cd; + //C::D::cd; + E::cde; + shadow; + //E::ce; + cX; + F::cXf; + F::cXfX; + X; + G::Xg; + //cXOtherFile; + //XOtherFile; + G::XgX; + I::h; + j; + L::k; + //k; + cdm; + Q::o; + //o; + r1; + //r2; + + return; + } + + } +} + +int main () +{ + using AAA::inA; + char c1; + + using namespace BBB; + + c1 = xyzq ('x'); + c1 = AAA::xyzq ('x'); + c1 = BBB::CCC::xyzq ('m'); + + inA ina; + + ina.xx = 33; + + int y; + + y = AAA::A_xyzq (33); + y += B_xyzq (44); + + BBB::Klasse cl; + + c1 = cl.xyzq('e'); + + marker1(); + + C::D::marker2 (); +}
namespace1.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: debug8.C =================================================================== --- debug8.C (nonexistent) +++ debug8.C (revision 154) @@ -0,0 +1,2 @@ +struct t{}; +struct g : public t{};
debug8.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: debug9.C =================================================================== --- debug9.C (nonexistent) +++ debug9.C (revision 154) @@ -0,0 +1,26 @@ +/* { dg-do assemble } */ +/* This testcase requires entries in the debug_range section in DWARF which + refer to a vague linkage function. */ + +struct s +{ + ~s (); +}; + +bool f1 (); +s f2 (s); + +template void +f3(const s & a) +{ + while (f1 () && f1 ()) + { + s c = f2(a); + } +} + +int main() +{ + f3<0>(s ()); + return 0; +}
debug9.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: typedef1.C =================================================================== --- typedef1.C (nonexistent) +++ typedef1.C (revision 154) @@ -0,0 +1,17 @@ +// PR debug/6436 +// { dg-do compile } + +typedef struct +{ + unsigned int a0, a1; +} A __attribute__ ((aligned(8))); + +typedef struct +{ + A a; +} B; + +struct C +{ + B *bp; +};
typedef1.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: typedef2.C =================================================================== --- typedef2.C (nonexistent) +++ typedef2.C (revision 154) @@ -0,0 +1,12 @@ +// PR c++/17695 + +template struct A +{ + T t; + A(); +}; + +struct B +{ + B() { typedef int C; A a; } +} b;
typedef2.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: dwarf2-1.C =================================================================== --- dwarf2-1.C (nonexistent) +++ dwarf2-1.C (revision 154) @@ -0,0 +1,22 @@ +// Copyright (C) 2006 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 6 Jan 2006 + +// PR 24824 +// Origin: wanderer@rsu.ru + +// { dg-options "-feliminate-dwarf2-dups" } + +namespace N +{ + struct Base + { + int m; + }; + + struct Derived : Base + { + using Base::m; + }; +} + +N::Derived thing;
dwarf2-1.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: typedef3.C =================================================================== --- typedef3.C (nonexistent) +++ typedef3.C (revision 154) @@ -0,0 +1,19 @@ +// PR debug/16261 +// { dg-do compile } + +namespace N +{ + struct A {}; + typedef A B; +} + +void foo() +{ + struct C + { + C(N::B) {} + }; + + N::B b; + C c(b); +}
typedef3.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: dwarf2-2.C =================================================================== --- dwarf2-2.C (nonexistent) +++ dwarf2-2.C (revision 154) @@ -0,0 +1,17 @@ +// PR debug/27057 +// { dg-do compile } +// { dg-options "-g -feliminate-dwarf2-dups" } + +namespace N +{ +} + +struct A +{ + void foo (); +}; + +void A::foo () +{ + using namespace N; +}
dwarf2-2.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr27657.C =================================================================== --- pr27657.C (nonexistent) +++ pr27657.C (revision 154) @@ -0,0 +1,9 @@ +/* { dg-do link } */ + +const char s[] = ""; +const char *const p = s; + +int main() +{ + return 0; +}
pr27657.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: template1.C =================================================================== --- template1.C (nonexistent) +++ template1.C (revision 154) @@ -0,0 +1,15 @@ +// PR c++/5118 + +template +class d +{ +public: + d() + { + myInt = Count; + } + int myInt; + virtual ~d() {} +}; + +volatile d<5> instD;
template1.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: enum-1.C =================================================================== --- enum-1.C (nonexistent) +++ enum-1.C (revision 154) @@ -0,0 +1,16 @@ +/* Verify that used enums are output. */ +/* { dg-do compile } */ +/* { dg-final { scan-assembler "JTI_MAX" } } */ + +int var; + +enum java_tree_index +{ + JTI_MAX +}; + +void function (void) +{ + var = JTI_MAX; +} +
enum-1.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: enum-2.C =================================================================== --- enum-2.C (nonexistent) +++ enum-2.C (revision 154) @@ -0,0 +1,22 @@ +/* Verify that used enums are output. */ +/* { dg-do compile } */ +/* { dg-final { scan-assembler "JTI_MAX" } } */ + +int var; + +enum java_tree_index +{ + JTI_MAX +}; + +template +void tmpl (void) +{ + var = JTI_MAX + X; +} + +void +function (void) +{ + tmpl<2>(); +}
enum-2.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: using1.C =================================================================== --- using1.C (nonexistent) +++ using1.C (revision 154) @@ -0,0 +1,15 @@ +// PR c++/19406 +// { dg-do compile } + +struct A +{ + virtual int foo(); + double d; +}; + +struct B : public A +{ + A::d; +}; + +B b;
using1.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: const1.C =================================================================== --- const1.C (nonexistent) +++ const1.C (revision 154) @@ -0,0 +1,11 @@ +// PR c++/6381 +// Bug: we were emitting the initializer for bar, which referenced foo, +// which was not emitted. + +// { dg-options "-O" } +// { dg-do link } + +static const int foo[] = { 0 }; +static const int * const bar[] = { foo }; + +int main() {}
const1.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: using2.C =================================================================== --- using2.C (nonexistent) +++ using2.C (revision 154) @@ -0,0 +1,21 @@ +// PR c++/22489 + +namespace N { } + +struct T +{ + T () { } +}; + +void +bar () +{ + struct U : public T + { + void baz () + { + using namespace N; + } + } u; + u.baz(); +}
using2.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: const2.C =================================================================== --- const2.C (nonexistent) +++ const2.C (revision 154) @@ -0,0 +1,15 @@ +// Copyright (C) 2005 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 1 Apr 2005 + +// { dg-options "-ggdb2" } +// Origin: ivan +// pinskia@gcc.gnu.org +// Bug 20505: ICE with -ggdb2 + +struct b +{ + static const int d; + virtual bool IsEmpty() const=0; + int e,c; +}; +const int b::d = ((__SIZE_TYPE__)(&((b*)1)->c) - 1);
const2.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: const3.C =================================================================== --- const3.C (nonexistent) +++ const3.C (revision 154) @@ -0,0 +1,3 @@ +/* { dg-do compile } */ +typedef float FloatVect __attribute__((__vector_size__(16))); +const FloatVect Foo = { 250000000.0, 0.0, 0.0, 0.0 };
const3.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: const4.C =================================================================== --- const4.C (nonexistent) +++ const4.C (revision 154) @@ -0,0 +1,2 @@ +/* { dg-do compile } */ +const __complex__ int x = 2i;
const4.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr22514.C =================================================================== --- pr22514.C (nonexistent) +++ pr22514.C (revision 154) @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +namespace s +{ + template struct _List_base + { + int _M_impl; + }; + template struct list : _List_base + { + using _List_base::_M_impl; + } +} /* { dg-error "expected unqualified-id before '\}'" } */ +s::list<1> OutputModuleListType; /* { dg-error "expected" } */
pr22514.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: crash1.C =================================================================== --- crash1.C (nonexistent) +++ crash1.C (revision 154) @@ -0,0 +1,17 @@ +template +class foo +{ + T t; +}; + +class bar; +typedef foo foobar; + +class obj +{ + virtual foobar* yeah() = 0; +}; + +class bar : virtual public obj +{ +};
crash1.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: anonunion1.C =================================================================== --- anonunion1.C (nonexistent) +++ anonunion1.C (revision 154) @@ -0,0 +1,14 @@ +// PR debug/9039 +// Verify that the debugging backends don't get confused by ALIAS_DECLs. + +int foo() +{ + union + { + int z; + unsigned int w; + }; + + w = 0; + return 0; +}
anonunion1.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr16792.C =================================================================== --- pr16792.C (nonexistent) +++ pr16792.C (revision 154) @@ -0,0 +1,10 @@ +// { dg-do compile } + +struct S { S(); }; +int foo (S b, double j) { }; + +int main () +{ + int foo (S, double); + S v; +}
pr16792.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr15736.cc =================================================================== --- pr15736.cc (nonexistent) +++ pr15736.cc (revision 154) @@ -0,0 +1,12 @@ +// Test PR 15736 fix +// Contributed by Devang Patel +// { dg-do compile } + + +struct B { + int n; +}; + +struct A : B { + using B::n; +}; Index: pr29906.C =================================================================== --- pr29906.C (nonexistent) +++ pr29906.C (revision 154) @@ -0,0 +1,10 @@ +// { dg-do compile } +// { dg-options "-g -fno-emit-class-debug-always" } + +struct A{ + typedef int T; + virtual ~A(); +}; +struct B:public A{ + using A::T; +};
pr29906.C Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.