gcc
相変わらずchangesに何も書かれてませんのでメモっときます。 4.7の時の変更が派手だったぶん、今回はおとなしいです。まあでも4.8で一番嬉しいのは-Ogと思う。 Ada2012のattributeの更なる実装 'Overlaps_Storageとか'Importとか'Conventionとか。めぼしい…
これがわからない。http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50678バグそのものは、Mountain Lionでの修正でそれまで__gnat_adjust_context_for_raiseに仕込んであったWorkaroundが不要になって、逆に悪さをするようになっていたというもの。Mountain L…
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も変わりました。昔語りをしてみましょう。
公式Release NoteのAdaのところが相変わらず手抜きなので、いつものようにメモっときます。今回はなぜかAdaCoreが本気出してて、gccがStage 3(バグ修正のみのフェイズ)に入ってもガンガンコミットされてたりしてたので、最後まで追いきれてないです。ウォッ…
http://d.hatena.ne.jp/shinichiro_h/20100823#1282563465の例は参照カウンタを活用すればstd::stringはもっと輝けるはずだ、clear();append(dir);ではなくてassign(dir);すればもっと速いんじゃないか、という実験。パターン1 void JoinFilePathStr(string …
2012対応状況 use all type → 「変数 := 式;」の形の式の部分でのみOK。 Implicit_Dereference → 関数呼び出しの返値でのみOK。 range-based for(違) → OK、ありえんぐらい酷いコードが出てくるけど動く。Ada.Iterator_Interfacesもちゃんとある。 operator …
試した分だけ。コンパイルには-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/
4.3でAda2005にほぼ対応してしまったgcc。追いかけるものがなくなった今、果たしてこれから先どこへ向かうのか? gccのAdaフロントエンドに加えられる変更は、AdaCoreのDevelopment Logがほぼ全てですので、何が加えられているのか見てみましょう。*1New att…
早速ビルドした。 http://panathenaia.halfmoon.jp/alang/gcc-private-build/ ちなみに、最初aaacafeでクロスコンパイラを作ってからずっとfreebsd4にしてたんですけど、さくらは実はfreebsd6だったため、6にしました……。 こうやって公開してると月に数件は…
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 …
http://gcc.gnu.org/gcc-4.3/changes.html 相変わらずスルーっぷりがすごいので、何が変わったのか私の把握している範囲でまとめます。 Ada2005関連 Ada.Calendar以下のArithmeticだのFormattingだのがサポートされた。 ゴルフに役に立つのは正直これぐらい…
ビルドした。RCはprereleaseと違ってランタイムチェックがOFFになってるようです。若干cc1やgnat1なんかのサイズが小さい。 http://panathenaia.halfmoon.jp/alang/gcc-private-build/ FTPのUP速度で今更に光回線を実感した。速い。
──というのがいつのまにか追加されてた。 http://gcc.gnu.org/onlinedocs/gnat_rm/Pragma-Favor_005fTop_005fLevel.html#Pragma-Favor_005fTop_005fLevel サブプログラムへのaccess型をトップレベル専用にしてネストされた関数にはトランポリンで対応するら…
──というのがいつのまにか追加されてた。 http://gcc.gnu.org/onlinedocs/gnat_rm/Pragma-Fast_005fMath.html 規格上保たないといけない精度とか無視して突っ切るためのpragmaらしい。 紛らわしいですがきっと-ffast-mathとはなんの関係も無いです。そもそも…
これまで散々Result変数方式やbuild-in-placeの利点を説いてきたのですが、なんとg++には既に実装済みでした。 struct result_t { int data_1; int data_2; }; result_t func() return result(1, 2) { ... }試そうとしたらとっくにremovedになってました。 …
動いた!?
やっぱり上手く動かないらしい。 http://sourceforge.net/mailarchive/forum.php?thread_name=12216616.post%40talk.nabble.com&forum_name=mingw-users
http://gcc.gnu.org/ml/gcc-patches/2007-05/msg02051.html これ読んですぐに-disable-sjlj-exceptions付けてビルドしてみたんですが、それっぽいコードは出ている様子なのに何故か例外受け止めれずに異常終了します。 所詮はgcc品質か……。 そういえば今のgcc…
https://libre2.adacore.com/のbinutilsには、#ifdefが書き足されていて、addr2lineのソースからlibaddr2line.aが作れるようになっているのでした。AdaCoreめ……こんなことで長年人を悩ませやがって……。 というわけでgnatmemが作れるようになりました。4.3のS…
でた。 ビルドした。 http://panathenaia.halfmoon.jp/alang/gcc-private-build/ 今回からAdaランタイムに手を加えてます。 それはいいんですが、コンパイラがメモリ食い過ぎて、512MBではVoVがコンパイルできなくなった……orz gcc富豪的過ぎる。
insight 6.5(最新版)のビルドに成功した。 MinGWのとこの6.3では、レジスタが見えなかった(全部同じ値が表示される)ので、ちょっと嬉しい。 なんだけど、--prefix=/mingwってやったら/mingw/lib以下からいかにもsharedなデータを探そうとしたり、make instal…
Weak指定された参照しかない場合、探索ライブラリ中にシンボルが見つかってもリンクされないんですね。なんとなくリンクされるとばかり思いこんでました。 それなら使いではあります。 Boehm GCなんかではCreateThreadをライブラリ独自のものに置き換えない…
皆さんご存知の通り、ldは、ELFフォーマットでしかスマートリンクのための--gc-sectionsが動いてくれません。WindowsはCOFF/PEですのでとても悲しいです。 そこで、FreePascalのスマートリンクの方法が使えます。.section毎に別々の.oにするだけです。力技で…
それはそうとhttp://panathenaia.halfmoon.jp/alang/gcc-private-build/ですが、改造は着実に進んでまして、既に入出力関連は普通に使いそうなものは全部UTF-8になっています。 特にpragma Wide_Character_Encodingの追加されたgcc-4.3系では、s-wch_*を実行…
本当は末尾再帰の最適化をするためのものであろうこの最適化オプション、-O3でも含まれていないのですが、Adaのような言語には必須です。昨日気付いたばっかですが。 たとえば、次のような状態を考えてみてください。 package A is procedure P; end A;with …
ちょっとだけ名前を出した__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…