LINUX.ORG.RU

Вышел GCC 3.3.6


0

0

Вышел последний представитель ветки gcc-3_3-branch версии 3.3.6. Ветка характеризуется как очень стабильная.

http://gcc.gnu.org/ml/gcc/2005-04/msg... http://gcc.gnu.org/ml/gcc/2005-05/msg...

ЗЫЖ Кажись, GCC именно этой ветки выбран в качестве основного компилятора в Sarge. Интересно проапдейтят они его в связи с последними новостями о заморозках?

>>> Подробности



Проверено: Pi ()

Ответ на: комментарий от Pi

Не соглашусь с тобой, Pi. Просто делай паузы в пути, "чтобы случайно дважды не пройти одной и той неверною дорогой" ;-) ((c) Машина времени)

Когда пишешь софт по кучу разных платформ, на каждой из которых свой компилятор, который по своему глючит, то не охота никуда торопиться, потому что, по крайней мере, глюки этих версий тебе известны. Иначе ты спешишь променять шило на мыло.

dmitrmax
() автор топика
Ответ на: комментарий от dmitrmax

полнолстью согласен - ничего супер категоричного я не заявлял

Pi ★★★★★
()
Ответ на: комментарий от anonymous

в diff'e 3.3.5-3.3.6 всегда два патча для alpha и sparc...

anonymous
()

Если честно, для "чистого С" за глаза хватает 2.95. В тройке только С++ начисто переделан.

anonymous
()
Ответ на: комментарий от anonymous

Тут нужен некий компромис между тем чего тебе хватает, и тем, что, например, тройка генерит лучший код. Плюс ко всему 2.95, кажись, не умеет x86-64... Хотя врать не буду, не помню.

dmitrmax
() автор топика

Если кто поставил уже, проверьте, этот код скомпилируется, или опять надо явно указывать scope (на 3.3.4 надо this->MethodA() или A::MethodA():

class A {
public:
  int MethodA() { return m_a; }
private:
  int m_a;
};

class B : public A {
public:
  int MethodB() { return MethodA(); }
};

int main() {
  B b;
  return B.MethodB();
}

lb
()
Ответ на: комментарий от lb

> Если кто поставил уже, проверьте, этот код скомпилируется, или опять надо явно указывать scope (на 3.3.4 надо this->MethodA() или A::MethodA():

что-то я не совсем понимаю вопроса.. все работает и так:

$ uname -a
NetBSD NBSD1 3.99.3 NetBSD 3.99.3 (NBSD1.conf) #0: Tue May  3 12:02:09 NOVST 2005  toor@NBSD1:/usr/src/sys/arch/i386/compile/NBSD1.conf i386

$ cat test.cc

class A {
public:
        int MethodA() { return m_a; }
private:
        int m_a;
};

class B : public A {
public:
        int MethodB() { return MethodA(); }
};

int main() {
        B b;
        return b.MethodB();
}

$ cc --version
cc (GCC) 3.3.3 (NetBSD nb3 20040520)
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ cc -c -Wall test.cc
$ ls -l
total 16
-rw-r--r--  1 ianzag  wheel   189 May  5 14:57 test.cc
-rw-r--r--  1 ianzag  wheel  1008 May  5 15:00 test.o

идет без проблем

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

При вспоминании темплейты потерялись :) sorry.

lb@inter gcc-bug $ cat 1.cc 
template <class T> class C1 {
public:
  C1() {}
  virtual ~C1() {}
protected:
  T* m_prop;
};

template <class T> class C2 : public C1<T> {
public:
  C2() {}
  void A() { m_prop = (T*)0; }
  virtual ~C2() {}
};

int main() {
  C2<int> a;
  return 0;
}

lb@inter gcc-bug $ g++ 1.cc
1.cc: In member function `void C2<T>::A()':
1.cc:12: error: `m_prop' undeclared (first use this function)
1.cc:12: error: (Each undeclared identifier is reported only once for each function it appears in.)

lb@inter gcc-bug $ g++ -v
Reading specs from /usr/lib/gcc/i486-pc-linux-gnu/3.4.3/specs
Configured with: /var/tmp/portage/gcc-3.4.3-r1/work/gcc-3.4.3/configure --enable-version-specific-runtime-libs --prefix=/usr --bindir=/usr/i486-pc-linux-gnu/gcc-bin/3.4.3 --includedir=/usr/lib/gcc/i486-pc-linux-gnu/3.4.3/include --datadir=/usr/share/gcc-data/i486-pc-linux-gnu/3.4.3 --mandir=/usr/share/gcc-data/i486-pc-linux-gnu/3.4.3/man --infodir=/usr/share/gcc-data/i486-pc-linux-gnu/3.4.3/info --with-gxx-include-dir=/usr/lib/gcc/i486-pc-linux-gnu/3.4.3/include/g++-v3 --host=i486-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --enable-shared --enable-threads=posix --disable-libgcj --enable-languages=c,c++,f77
Thread model: posix
gcc version 3.4.3 20041125 (Gentoo Linux 3.4.3-r1, ssp-3.4.3-0, pie-8.7.7)

lb
()
Ответ на: комментарий от lb

> При вспоминании темплейты потерялись :) sorry.

..и даже в таком виде на 3.3.3 работает :)

$ uname -a NetBSD NBSD1 3.99.3 NetBSD 3.99.3 (NBSD1.conf) #0: Tue May 3 12:02:09 NOVST 2005 toor@NBSD1:/usr/src/sys/arch/i386/compile/NBSD1.conf i386

$ cat test1.cc

template < class T > class C1 { public: C1() {} virtual ~ C1() {} protected: T * m_prop; };

template < class T > class C2:public C1 < T > { public: C2() {} void A() { m_prop = (T *) 0; } virtual ~ C2() {} };

int main() { C2 <int> a; return 0; }

$ cc --version cc (GCC) 3.3.3 (NetBSD nb3 20040520) Copyright (C) 2003 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ cc -c -Wall test1.cc $ ls -l total 32 -rw-r--r-- 1 ianzag wheel 189 May 5 14:57 test.cc -rw-r--r-- 1 ianzag wheel 1008 May 5 15:00 test.o -rw-r--r-- 1 ianzag users 260 May 5 17:27 test1.cc -rw-r--r-- 1 ianzag wheel 3376 May 5 17:28 test1.o

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от lb

> При вспоминании темплейты потерялись :) sorry.

забыл форматирование...

$ uname -a
NetBSD NBSD1 3.99.3 NetBSD 3.99.3 (NBSD1.conf) #0: Tue May  3 12:02:09 NOVST 2005  toor@NBSD1:/usr/src/sys/arch/i386/compile/NBSD1.conf i386

$ cat test1.cc

template < class T > class C1 {
public:
        C1() {}
        virtual ~ C1() {}
protected:
        T * m_prop;
};

template < class T > class C2:public C1 < T > {
public:
        C2() {}
        void A() {
                m_prop = (T *) 0;
        }
        virtual ~ C2() {}
};

int
main()
{
        C2 <int> a;
        return 0;
}

$ cc --version
cc (GCC) 3.3.3 (NetBSD nb3 20040520)
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ cc -c -Wall test1.cc
$ ls -l
total 32
-rw-r--r--  1 ianzag  wheel   189 May  5 14:57 test.cc
-rw-r--r--  1 ianzag  wheel  1008 May  5 15:00 test.o
-rw-r--r--  1 ianzag  users   260 May  5 17:27 test1.cc
-rw-r--r--  1 ianzag  wheel  3376 May  5 17:28 test1.o

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от logIN

Нету. Более того, и в багтраке, и в maillist похожие примеры от разных людей ответа не нашли :(

PS. баг впервые был обнаружен в 3.4.0, и в версиях 4.0 2-х месячной давности присутствовал.

lb
()
Ответ на: комментарий от lb

>ету.
А это разве не то?

http://gcc.gnu.org/gcc-3.4/changes.html :

* In a template definition, unqualified names will no longer find members of a dependent base (as specified by [temp.dep]/3 in the C++ standard). For example,
template <typename T> struct B {
int m;
int n;
int f ();
int g ();
};
int n;
int g ();
template <typename T> struct C : B<T> {
void h ()
{
m = 0; // error
f (); // error
n = 0; // ::n is modified
g (); // ::g is called
}
};

logIN
()
Ответ на: комментарий от dmitrmax

> тройка генерит лучший код

Для "чистого С", как мне кажется, оптимизация алгоритма дает гораздно больше, чем оптимизация в компиляторе. ;-))

Развитие С остановилось. Если С99 не нужен, то gcc 2.95 самое то.

http://www-106.ibm.com/developerworks/linux/library/l-c99.html?ca=dgr-lnxw07U...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.