10/06/01 16:56:31
せっかくgccなんだから、objc とか ada とかで書いてみるとか。
437:デフォルトの名無しさん
10/06/01 21:19:39
まじめな話、gcc が c で書かれているから、いろんなプラットホームに移植されたわけで‥‥‥。
438:デフォルトの名無しさん
10/06/01 21:52:21
bootstrapのプロセスはどうなるんだろう?
439:デフォルトの名無しさん
10/06/02 07:33:00
>>438
クロスが基本となるだろう。
440:デフォルトの名無しさん
10/06/02 13:57:57
>>437
昔はクロス環境作るの大変だったけど、今は普通だし、
開発環境そこらじゅうにあるし、問題にならないんじゃね
441:デフォルトの名無しさん
10/06/02 19:31:49
--enable-build-with-cxx
442:デフォルトの名無しさん
10/06/02 21:30:05
gcc動くけどg++ダメなんて環境はそんなになさそうだしなあ。
ついでにどうでもいいことだがRMSがこの決定に同意しているのか気にならんでもない。
443:デフォルトの名無しさん
10/06/03 09:55:20
おっ、初めての経験。 ちょっと複雑なデーター構造の初期化を実験してたらg++を無限
ループに入れる事に成功したw 以下のコードをg++でコンパイルしてみてくれ。
g++ 4.0.1, g++ 4.1.2で再現された。 gccではすぐに止る。
struct {
int value;
union {
int value2;
struct {
int value3;
int value4;
} s;
} u;
} local = { value : 0,
u : s: { value3 : 3, value4: 4 }};
こういう無限エラーループに入る.
init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’
init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’
init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’
init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’
init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’
init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’
init.c:11: error: ‘<anonymous struct>::<anonymous union>’ has no non-static data member named ‘u’
444:デフォルトの名無しさん
10/06/03 10:19:07
ちなみにこれが正解だった
...
local = { value : 0, u : { s : { value3 : 3, value4 : 4 }}};
445:デフォルトの名無しさん
10/06/04 17:27:31
書けるけど読みたくは無い構造してんなぁ
446:デフォルトの名無しさん
10/06/04 17:29:15
>>443
∞ループに入る最小の構造を作るためにもうちょっと単純化してみたら面白いかもよ。
447:デフォルトの名無しさん
10/06/04 20:57:18
mingwのLTOまだあああああああああああ
448:デフォルトの名無しさん
10/06/08 06:25:05
これって知ってた?
URLリンク(sourceware.org)
試したらこんな事が出来て涙が出た。
(gdb) list
7 map<char*, int> test;
8
9 test["hoge"] = 111;
10 test["mage"] = 222;
11 test["moge"] = 333;
12 }
(gdb) p test
$1 = std::map with 3 elements = {
[0x8049760 "hoge"] = 111,
[0x8049765 "mage"] = 222,
[0x804976a "moge"] = 333
}
449:デフォルトの名無しさん
10/06/08 06:33:01
これを/rオプション(raw)で見るといつもの様に
$2 = {_M_t = {
_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<char* const, int> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<ch¥
ar* const, int> > >> = {<No data fields>}, <No data fields>},
_M_key_compare = {<std::binary_function<char*, char*, bool>> = {<No data fields>}, <No data fields>}, _M_header = {
_M_color = std::_S_red, _M_parent = 0x804b028, _M_left = 0x804b008, _M_right = 0x804b048}, _M_node_count = 3}}}
450:デフォルトの名無しさん
10/06/29 22:13:29
FreeBSDの人いる?
gcc 4.5.0で-O2で最適化したら例外をキャッチできないケース見つけた。-O1だとOK。
再現できるか試して欲しい。
再現パターンはこんな感じ。
分岐の中にthrowがあって、最適化の結果throwにあたるコードが関数のエピローグコードの
後ろに移動してしまった場合にたまに発生。
bool flag = true;
void f()
{ if(flag) throw 1; }
int main()
{
try{ f(); }catch(...){ cout << "ok" << endl; }
}
451:デフォルトの名無しさん
10/06/30 08:36:05
4.5.0 ということは ports ? 野良ビルド?
452:デフォルトの名無しさん
10/06/30 10:26:36
うん
453:デフォルトの名無しさん
10/06/30 10:40:31
結局どっちなんだよと思ったのは私だけじゃないはず
454:デフォルトの名無しさん
10/06/30 11:36:41
結局どっちなんだよ!
455:デフォルトの名無しさん
10/06/30 16:40:24
>>451
URLリンク(ftp.riken.go.jp)の.tbzと野良の両方で再現した。
ただ、OSXからのFreeBSDクロスコンパイル→転送して実行、ではAdaのほうでも再現したのに、
FreeBSD上のセルフコンパイルでは野良ではAdaでは再現しない(C++では再現、gcjはビルドできなかった……)と
結構ばらつく。よくわからん。
456:デフォルトの名無しさん
10/07/02 17:51:11
うーむ