GCCについて part10

■ このスレッドは過去ログ倉庫に格納されています
2011/09/03(土) 14:13:04.14
史上最強かもしれなかったツール、GCC(GNU Compiler Collection)について語るスレ。

GNU本家のGCCページ
http://gcc.gnu.org/

Binutils - Collection of binary utilities ←これも必要だぞ。
http://www.gnu.org/directory/GNU/binutils.html

GNU Binutils
http://sources.redhat.com/binutils/

GCC online documentation
http://gcc.gnu.org/onlinedocs/

Installing GCC
http://gcc.gnu.org/install/

GCC Timeline
http://gcc.gnu.org/releases.html#timeline

Calendar
http://gcc.gnu.org/develop.html#timeline

前スレ
GCCについて part9
http://hibari.2ch.net/test/read.cgi/tech/1246059290/

関連スレ
【最速へ】LowLevelVirtualMachine【LLVM】
http://hibari.2ch.net/test/read.cgi/tech/1211547655/
2013/11/04(月) 10:35:57.62
>>355
入力した内容なら、必要に応じて"/dev/stderr"(stderr)にでも出力すればいいじゃん。
2013/11/04(月) 19:25:05.12
>>355
scanf を実行する前に標準出力を /dev/null につけかえるのでは、pipe(), pipe2() とかで?
2013/11/04(月) 19:39:51.62
>>357
意味不明
2013/11/04(月) 21:46:42.94
>>357
はい、そのとおりです。
2013/11/05(火) 14:08:37.22
>>357
pipe2はlinux専用関数だがな
2013/11/05(火) 17:17:29.77
>>360
ウイーンドーズにも/dev/nullがあるんですか?
2013/11/05(火) 17:20:56.19
Windows だと NUL だろ。
2013/11/05(火) 21:07:31.14
察するに、パスワード入力ではechoさせたくないとかそれ系の話だろ?
普通はtermiosやSetConsoleModeでやることで、標準出力を/dev/nullに付け替えるなんて教えた奴は凄いんだか意地悪なんだか
2013/11/05(火) 21:23:56.90
>>363
標準出力のリダイレクトでは、その望みを叶えられないのだが。
凄くも何ともない。
2013/11/10(日) 17:40:38.34
int f(int n) { while (--n) ; return n}
がgcc -O2 (4.6.3)で
int f(int ) { retunr 0; }
のようにコンパイルされました。
この最適化がヒューリスティック(パターンデータベースのようなもの)を使っているのか
知りたいのですが、どのへんを調べればいいのでしょうか?

(質問の意図は、自作の最適化器にもこの手の処理をいれたいのですが、
場当たり的に入れるしかないのか、一般的な方法があるのかを知りたいということです。)
2013/11/10(日) 18:35:36.33
ただの定数最適化に見える。
あなたのレベルを分かるようにしないと、ドラゴンブック読めとか言われちゃうよ。
2013/11/10(日) 18:37:40.20
>>366
なんか見当違いなレスだなぁ
2013/11/10(日) 20:37:34.22
すいません。ドラゴンブックは学生時代に買って眺めたことはあります。専攻はコンピュータ科学でした。
コンパイラ関係はあまり深く学ばなかったとの、なにぶん10年以上のブランクがあるので、
どの程度の難しさの問題なのかもわからないのです。
定数最適化、なんでしょうか?
while文が終わるとすれば0しかありえないですが、while文の停止性まで最適化器が判断できるのか疑問だったのです。
追伸:
int f(int n) { while (n=n-2) {} return n; } main() { f(-2); }
とかだとnの偶奇(もっと一般のケースもいけるみたいです)で結果を変えるようです。
-O0 と -O2 で実行時間が全然違ってしまいますが速くなる分にはいいんですよね。
2013/11/10(日) 21:40:38.13
GCCはどうだか知りませんのでドラゴンブックレベルの一般論ですが、
ループ最適化は普通にやるので、条件式は判断します。
制約条件がそこではっきりするので最終的には通常の定数最適化
パスで消えてるんじゃないでしょうか。
ドラゴンブックに書いてなかったっけ?

停止性が判断できるかという疑問ですが、判断できなければ
最適化はやらないということになるはずです。
逆に聞きたいのですが、ヒューリスティックに何かできる
んでしょうか? 実行時判断みたいなもの?
2013/11/10(日) 23:40:22.44
前半はなんとなくわかりました。ドラゴンブックは多分実家にあるので参照できませんが、、、
後半ですが、誤用かもしれませんが経験則の意味で使いました。
停止性は当然一般には判断できないので、どんな経験則を使ってるのかな、ってぐらいで、
深い意味はなかったです。
371デフォルトの名無しさん
垢版 |
2014/01/04(土) 22:39:03.46
ドラゴンブックってなーに
2014/01/04(土) 23:07:48.15
ぐぐれ
2014/01/06(月) 14:56:20.27
教科書的な最適化はやってないと思うよ
2014/01/06(月) 23:57:03.34
>>365
ブロック内の変数に関数外の部分から影響を受けるかどうか(volatileやrestrictじゃないメモリ参照とか)のフラグを用意して、
外部の影響を受けない変数や定数から構成された条件式は停止時の条件が計算できる可能が高いので最適化を試みるとか。
似たような考え方でブロックが(大域変数などに)副作用を与えるかどうかを判断すれば簡略化やコードの削除ができるんじゃない?
2014/01/09(木) 18:39:35.49
>>371
中学生が大好きな架空の生物が掲載された魔導書だよ
恐れおののきつつも憧れを抱き、本棚の奥で埃を被っている一冊
忘れた頃に自分の娘がドラゴンを召喚して世界を崩壊へ誘ったりするアレ
2014/01/09(木) 19:05:21.73
>>365
l1: --n;
if (n != 0) goto l1;
return n;
不変式解析で、
l1: --n;
if (n != 0) goto l1;
return 0;
nの非到達性で、
return 0;
2014/01/09(木) 23:33:20.23
>>375
おもしろそうですね
2014/01/22(水) 22:45:26.19
libdwarfがELFに依存してて泣ける…
Windows(MinGW)だとPE+DWARFだから使えないのが残念

MinGWのobjdump.exeは自力で解析してるから、ソースを参考にすれば
なんとかなりそうだけどDWARFの知識が必要になるし…
2014/01/22(水) 23:18:17.02
libdwarfをPE対応にしてupstreamにパッチ投げれば
他の人も幸せになれるんでないの
2014/01/22(水) 23:46:19.90
正直libdwarf内で最低限のELFエミュレーションをしようと思ってソース
見たけどめげた…ごめんよ

とりあえずobjdump.exeがやってるDWARF解析部分を解析してみるよ
それでDWARFになじんだらまたトライしてみたい
381デフォルトの名無しさん
垢版 |
2014/02/13(木) 21:57:38.58
どうでもいいがCentOS最近入れたらデフォルトではインスコされてないんだな
gccのないLinuxなんてLinuxじゃないやい
2014/02/13(木) 22:29:35.18
CentOSのGCCは糞古いから最初から入ってなくても問題無い
ただ新しいのを入れるには色々手間は掛かる
2014/02/13(木) 22:46:51.56
3回コンパイルすりゃいいだけだろ
2014/02/14(金) 19:50:03.01
gccとg++は最近不具合があるから、clangに乗り換えることにした。
2014/02/14(金) 20:02:18.20
あそう
2014/02/14(金) 21:13:38.73
あべ
2014/02/14(金) 23:07:39.94
あべし
2014/02/15(土) 01:10:07.47
ひでぶ
2014/02/15(土) 04:20:34.58
たわば
2014/02/15(土) 20:59:09.39
>>389
やぁ 先輩
2014/02/15(土) 21:26:10.59
お こんなとこいたか まぁ上がれ
392デフォルトの名無しさん
垢版 |
2014/02/15(土) 22:58:41.46
おう、唐突なあ〜るスレやめろや
2014/02/17(月) 15:17:28.49
うるさい! おまえなんかロボットだ
2014/02/17(月) 16:03:52.41
助けて あーりんロボ!ピンチなの!
2014/02/17(月) 21:00:58.58
とほほ
2014/02/18(火) 21:19:37.28
埼玉県の地図さえあれば
2014/02/18(火) 21:57:49.43
山田うどんの場所がわかる
398デフォルトの名無しさん
垢版 |
2014/02/18(火) 22:39:44.23
いろんなレガシー言語の墓場になってて面白いよね
2014/03/17(月) 18:34:12.34ID:rLCh2DtT
>>394
「ロボットじゃないよ,アンドロイドだよ」って応えないと
2014/03/21(金) 17:27:54.35ID:Qhdzl4hJ
何を言ってる。
あれは立派なロボだ。設計図を知らんのか。
2014/03/24(月) 14:20:24.04ID:4BzhBi/8
>>381
Solarisにccがないとかいう話が昔なんとかかんとか

> どうでもいいがCentOS最近入れたらデフォルトではインスコされてないんだな
> gccのないLinuxなんてLinuxじゃないやい
2014/03/24(月) 22:27:08.61ID:SeS398JM
デフォってなによー の話だな
2014/03/25(火) 19:24:42.50ID:I6L0W68I
え?Linux ですら clang に移行したの?
2014/03/25(火) 20:02:11.82ID:AvCKhDY2
>>403
ちげーよ、標準インストールと開発インストールの違いもわかんねーコゾウだよ
2014/03/25(火) 20:57:10.65ID:gYecV8lQ
今日4.9をsvnからチェックアウトしてビルドしたんだけど、gfortranのopm_lib.modとかバイナリになった?
去年9月頃ははテキストだったけど仕様変わったのかなそれともビルド失敗したのかな
2014/03/25(火) 21:00:28.08ID:gYecV8lQ
あ、opm有効にしてビルドしたら実行ファイルは動いてるから仕様変わったのね
履歴にはなんも書いてないっぽい
同じく昨日ビルドした4.8.3のスナップは未だにテキスト形式なんだけどなー
2014/03/25(火) 21:20:14.97ID:gYecV8lQ
更に勘違い。去年9月の4.9もバイナリだった、4.8はずーっとテキスト形式
あーんもう、ごめん!
2014/03/25(火) 23:27:56.52ID:6NPXk5PR
MacOSとFreeBSDはclangだよな
409デフォルトの名無しさん
垢版 |
2014/03/26(水) 00:54:07.95ID:+kV1DCY1
せやな
MacOSは-stdlib=libc++をつけるのがめんどくさい
2014/04/07(月) 00:58:28.85ID:JdSV9wAR
ツール使えよ
2014/04/22(火) 17:35:18.77ID:NoRZCfW9
trankのgccが4.10になってた
セグメントエラー多すぎ
412デフォルトの名無しさん
垢版 |
2014/04/29(火) 09:38:50.75ID:ysohpla1
GCC4.9ってOpenMP4.0フルサポートしてんの?
2014/04/30(水) 12:26:36.46ID:RKEixZj5
4.9.0
出てたんだ
2014/05/06(火) 16:53:49.90ID:D1oOHYCI
次は4.10なのか
5になるためのネタがない?
2014/05/30(金) 10:15:09.82ID:A+ocbhhF
415 のテスト
2014/07/17(木) 16:21:02.24ID:EuKBlVpO
4.9.1
417デフォルトの名無しさん
垢版 |
2014/07/21(月) 12:35:34.97ID:a+/AEtW5
nmの出力結果とオブジェクトファイルを合成して表示する方法はありますか?
objdumpを見てもそれらしいオプションが見当たりません
418デフォルトの名無しさん
垢版 |
2014/07/27(日) 19:12:27.24ID:pp47+FdL
>>417
% ./search_symbol.py -C NCursesWindow::scanw /lib/*
/lib/libncurses++.a: cursesw.o: 0000000000000100 T NCursesWindow::scanw(int, int, char const*, char*)
/lib/libncurses++.a: cursesw.o: 00000000000000b0 T NCursesWindow::scanw(int, int, char const*, ...)

みたいな出力が得られればいいてこと?
だったら
https://github.com/katonori/utils/blob/master/search_symbol.py
は?

自分はundefined referenceが出たときにシンボル検索するのに使ってます。
2014/07/28(月) 01:04:10.57ID:S8bP8KRA
LDでMAP履かせるのは
ハックしてる(たい)のかな
2014/07/30(水) 01:21:20.41ID:LiTgK4lk
LinusがGCC4.9.0のバグにキれた
2014/07/30(水) 02:01:24.91ID:oDeeIPz4
もう終わってるようですが
釣られたね
2014/07/30(水) 03:45:12.55ID:PPnK+MrP
見通しの悪いコードだからね
バグは仕方がないね
2014/08/06(水) 01:49:57.96ID:UfTRWNoo
>>422
アホ
2014/08/06(水) 07:20:21.65ID:+ssJ76ua
つまり誤りを指摘できないコンパイラである
2014/09/01(月) 17:18:59.59ID:VPjEFum2
次は5になるんだ
2014/11/01(土) 11:07:43.54ID:rGDtr6qH
4.9.2
427デフォルトの名無しさん
垢版 |
2015/02/19(木) 02:20:08.94ID:5auBdrhP
 
428デフォルトの名無しさん
垢版 |
2015/04/08(水) 00:39:51.33ID:51Wd8GKc
  
2015/04/08(水) 11:17:37.83ID:hEHuYJX1
盗用対策でわざと読めないコードにしたらしいけど
いまじゃこんな時代遅れのコンパイラをパクる人はいない
430デフォルトの名無しさん
垢版 |
2015/04/08(水) 15:21:54.99ID:wDOW6rTo
5でC++のABI変わるの?
2015/04/23(木) 09:04:30.89ID:L0hrJWKj
5.1.0
2015/04/23(木) 15:15:21.89ID:atwBzKak
4.3.2
433デフォルトの名無しさん
垢版 |
2015/06/05(金) 04:36:33.22ID:UT3b9sCy
  
434デフォルトの名無しさん
垢版 |
2015/09/02(水) 17:07:20.43ID:DQQjJ9NG
  
435デフォルトの名無しさん
垢版 |
2015/11/03(火) 21:24:15.94ID:hk+PiOLT
   
2016/01/11(月) 11:14:38.50ID:HoJC5dfe
GCC6の変更てんって、インデントのみ?
2016/01/28(木) 20:35:49.10ID:VeopZaJ3
最近 C++ を勉強しはじめたのですが、
g++ のエラー出力の形式が gcc とものすごく違うのに面喰っています。
オプション指定などで gcc と同様の形式にすることはできないのでしょうか?
2016/01/28(木) 21:23:31.95ID:TCLaQcMe
もうちょっと具体的に
2016/01/28(木) 21:45:04.24ID:VeopZaJ3
すいません。
勘違いしてました。
cpp を gcc でコンパイルしたときの

>gcc -o sample sample.cpp
>/tmp/ccHobvfJ.o: 関数 `main' 内:
>sample.cpp:(.text+0xa): `std::cout' に対する定義されていない参照です

「sample.cpp:(.text+0xa)」に面喰ってたのですが、g++ でコンパイルしたら
ちゃんと知ってる書式で出ました。
2016/01/28(木) 21:52:47.07ID:CWsUf0Ic
おう
2016/02/01(月) 02:47:57.76ID:HMRpImQy
それリンカ…
2016/02/01(月) 13:16:02.61ID:84B0KlUA
アイモ?
2016/02/03(水) 13:48:57.13ID:iTeEw9tj
>>441
梨花?
2016/02/28(日) 18:25:57.85ID:uogjYwY3
GCC 6の新機能が明らかに
http://news.mynavi.jp/news/2016/02/28/084/
2016/03/02(水) 02:54:35.44ID:oSr380JQ
GCC -O0、-O1、-O2、-O3、-Ofast 高速化比較
http://news.mynavi.jp/news/2016/03/01/128/
2016/03/02(水) 14:42:42.45ID:5GhErR2D
Osでもやってくれればいいのに
2016/03/02(水) 17:20:10.78ID:lD1NPV/0
O2でいつもやってます。
Ofastなんてのもあるのね。
2016/03/05(土) 16:11:38.62ID:lT2oGFyN
最適化オプション込みのGCCとClangベンチマークの結果は?
http://news.mynavi.jp/news/2016/03/05/127/
2016/03/11(金) 20:51:18.84ID:X4qaC3Iv
-fdiagnostics-color=always
GCC6
2016/04/30(土) 17:27:04.53ID:OgsdJJuf
https://gcc.gnu.org/gcc-6/
GCC6.1
2016/06/15(水) 02:52:27.21ID:+TkysGmJ
書いて
2016/06/16(木) 00:54:16.68ID:51iFbwI8
GCC は知ってても それだけじゃ困ります
2016/06/16(木) 02:36:57.43ID:Iyn9EIt5
>>452
オライリーカセットエルエル
2016/06/16(木) 07:05:41.63ID:TbbHcW/c
>>452
ABCDGCC アルファベットのその次は〜♪
2016/06/16(木) 15:56:37.06ID:rsf/7RT/
CGCもありますよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況