gcc

gcc-4.8の変更点

相変わらずchangesに何も書かれてませんのでメモっときます。 4.7の時の変更が派手だったぶん、今回はおとなしいです。まあでも4.8で一番嬉しいのは-Ogと思う。 Ada2012のattributeの更なる実装 'Overlaps_Storageとか'Importとか'Conventionとか。めぼしい…

__gnat_adjust_context_for_raiseの怪

gcc

これがわからない。http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50678バグそのものは、Mountain Lionでの修正でそれまで__gnat_adjust_context_for_raiseに仕込んであったWorkaroundが不要になって、逆に悪さをするようになっていたというもの。Mountain L…

Adaと64bit呼び出し規約とlldiv

lldivを呼ぶ関数を書いてたらちょっと驚きました。 こういうの。 procedure call_lldiv (x, y : long_long_integer; q, r : out long_long_integer) is type lldiv_t is record q, r : long_long_integer; end record; pragma Convention (C, lldiv_t); func…

振り返ってみる

「Ada言語の現状」という検索キーワードでここにたどり着いた方がおられるらしい。ふと振り返ってみると、私が最初にAdaに触れてから、随分とAdaも変わりました。昔語りをしてみましょう。

gcc-4.7のAdaの変更点

公式Release NoteのAdaのところが相変わらず手抜きなので、いつものようにメモっときます。今回はなぜかAdaCoreが本気出してて、gccがStage 3(バグ修正のみのフェイズ)に入ってもガンガンコミットされてたりしてたので、最後まで追いきれてないです。ウォッ…

std::stringはもっと速いはず?

http://d.hatena.ne.jp/shinichiro_h/20100823#1282563465の例は参照カウンタを活用すればstd::stringはもっと輝けるはずだ、clear();append(dir);ではなくてassign(dir);すればもっと速いんじゃないか、という実験。パターン1 void JoinFilePathStr(string …

4.7がStage 3に入ったので試してみた

2012対応状況 use all type → 「変数 := 式;」の形の式の部分でのみOK。 Implicit_Dereference → 関数呼び出しの返値でのみOK。 range-based for(違) → OK、ありえんぐらい酷いコードが出てくるけど動く。Ada.Iterator_Interfacesもちゃんとある。 operator …

gcc-4.6のAda2012対応状況メモ

gcc

試した分だけ。コンパイルには-gnat2012が必要。 function F return Integer is (0); 通る。便利になりましたね。 use all type 構文としては通ります、しかしまだ効果はuse typeと同じ aspect 型にのみ付けられるっぽいです。aspect.adsを見る感じ既存pragm…

作りかけの置換ランタイム

本当は完成させてから偉そうに書きたかったのですが、もうなんといいますか完全に私事で自業自得ですがそれどころではありませんので、書いちゃいます。https://github.com/ytomino/drake今までGNATについてあーだこーだ文句を書いたりコンパイラに勝手なパ…

これは!?

http://www.adacore.com/2008/11/28/NF-62-H703-009-gnat/

gcc 4.4の新機能

4.3でAda2005にほぼ対応してしまったgcc。追いかけるものがなくなった今、果たしてこれから先どこへ向かうのか? gccのAdaフロントエンドに加えられる変更は、AdaCoreのDevelopment Logがほぼ全てですので、何が加えられているのか見てみましょう。*1New att…

4.3.0リリース

gcc

早速ビルドした。 http://panathenaia.halfmoon.jp/alang/gcc-private-build/ ちなみに、最初aaacafeでクロスコンパイラを作ってからずっとfreebsd4にしてたんですけど、さくらは実はfreebsd6だったため、6にしました……。 こうやって公開してると月に数件は…

再帰関数の展開

gcc

4.3.0の最適化は凄いらしい。 http://d.hatena.ne.jp/toge/20080229#1204238423 with ada.integer_text_io; procedure test is function f(x : integer) return integer is begin if x <= 0 then return 1; else return x * f(x - 1); end if; end f; begin …

changes

http://gcc.gnu.org/gcc-4.3/changes.html 相変わらずスルーっぷりがすごいので、何が変わったのか私の把握している範囲でまとめます。 Ada2005関連 Ada.Calendar以下のArithmeticだのFormattingだのがサポートされた。 ゴルフに役に立つのは正直これぐらい…

4.3.0-RC1

gcc

ビルドした。RCはprereleaseと違ってランタイムチェックがOFFになってるようです。若干cc1やgnat1なんかのサイズが小さい。 http://panathenaia.halfmoon.jp/alang/gcc-private-build/ FTPのUP速度で今更に光回線を実感した。速い。

pragma Favor_Top_Level

──というのがいつのまにか追加されてた。 http://gcc.gnu.org/onlinedocs/gnat_rm/Pragma-Favor_005fTop_005fLevel.html#Pragma-Favor_005fTop_005fLevel サブプログラムへのaccess型をトップレベル専用にしてネストされた関数にはトランポリンで対応するら…

pragma Fast_Math

──というのがいつのまにか追加されてた。 http://gcc.gnu.org/onlinedocs/gnat_rm/Pragma-Fast_005fMath.html 規格上保たないといけない精度とか無視して突っ切るためのpragmaらしい。 紛らわしいですがきっと-ffast-mathとはなんの関係も無いです。そもそも…

Named return

gcc

これまで散々Result変数方式やbuild-in-placeの利点を説いてきたのですが、なんとg++には既に実装済みでした。 struct result_t { int data_1; int data_2; }; result_t func() return result(1, 2) { ... }試そうとしたらとっくにremovedになってました。 …

zcx for Windows

gcc

動いた!?

MinGWの公式配布にいつの間にかdw2版4.2.1ができてると思ったら

gcc

やっぱり上手く動かないらしい。 http://sourceforge.net/mailarchive/forum.php?thread_name=12216616.post%40talk.nabble.com&forum_name=mingw-users

zcx for Windows

gcc

http://gcc.gnu.org/ml/gcc-patches/2007-05/msg02051.html これ読んですぐに-disable-sjlj-exceptions付けてビルドしてみたんですが、それっぽいコードは出ている様子なのに何故か例外受け止めれずに異常終了します。 所詮はgcc品質か……。 そういえば今のgcc…

libaddr2line.aの作り方がわかった

gcc

https://libre2.adacore.com/のbinutilsには、#ifdefが書き足されていて、addr2lineのソースからlibaddr2line.aが作れるようになっているのでした。AdaCoreめ……こんなことで長年人を悩ませやがって……。 というわけでgnatmemが作れるようになりました。4.3のS…

gcc-4.2.0

gcc

でた。 ビルドした。 http://panathenaia.halfmoon.jp/alang/gcc-private-build/ 今回からAdaランタイムに手を加えてます。 それはいいんですが、コンパイラがメモリ食い過ぎて、512MBではVoVがコンパイルできなくなった……orz gcc富豪的過ぎる。

insight

gcc

insight 6.5(最新版)のビルドに成功した。 MinGWのとこの6.3では、レジスタが見えなかった(全部同じ値が表示される)ので、ちょっと嬉しい。 なんだけど、--prefix=/mingwってやったら/mingw/lib以下からいかにもsharedなデータを探そうとしたり、make instal…

Weak Linkその2

gcc

Weak指定された参照しかない場合、探索ライブラリ中にシンボルが見つかってもリンクされないんですね。なんとなくリンクされるとばかり思いこんでました。 それなら使いではあります。 Boehm GCなんかではCreateThreadをライブラリ独自のものに置き換えない…

似非スマートリンク、あるいはHello Worldのビルド時間世界一への挑戦

gcc

皆さんご存知の通り、ldは、ELFフォーマットでしかスマートリンクのための--gc-sectionsが動いてくれません。WindowsはCOFF/PEですのでとても悲しいです。 そこで、FreePascalのスマートリンクの方法が使えます。.section毎に別々の.oにするだけです。力技で…

gccのAdaランタイム改造

それはそうとhttp://panathenaia.halfmoon.jp/alang/gcc-private-build/ですが、改造は着実に進んでまして、既に入出力関連は普通に使いそうなものは全部UTF-8になっています。 特にpragma Wide_Character_Encodingの追加されたgcc-4.3系では、s-wch_*を実行…

-foptimize-sibling-callsは別名定義ができる言語には必須ですよねえ

gcc

本当は末尾再帰の最適化をするためのものであろうこの最適化オプション、-O3でも含まれていないのですが、Adaのような言語には必須です。昨日気付いたばっかですが。 たとえば、次のような状態を考えてみてください。 package A is procedure P; end A;with …

Weak Link

gcc

ちょっとだけ名前を出した__attribute__((weak))ですが、こんな機能です。 package p is function pow10(x : Long_Float) return Long_Float; pragma Import(C, pow10); pragma Weak_External(pow10); end p;with Ada.Text_IO; use Ada.Text_IO; with Ada.Lo…

マージ来た

http://gcc.gnu.org/ml/gcc-patches/2006-10/ アンタgccのMLは暫く見ないと誓ったんじゃないのかなんて話は置いておいて、AdaCoreの定例一括マージ来ました。これでgccのtrunkもGNAT GPL 2006相当になったわけですが、どうせならあと何週間か早ければ、gcc-4…