コメントがおかしい?
昨日GCC Wikiaでソースを読んでいて、コメントが変じゃないかというところにぶつかった。
gcc/c-lex.cの513行目と541行目の右にあるコメントが逆になると思う。
513行目を含む関数1つを下に載せます。
527 static enum integer_type_kind
528 narrowest_signed_type (unsigned HOST_WIDE_INT low,
529 unsigned HOST_WIDE_INT high, unsigned int flags)
530 {
531 enum integer_type_kind itk;
532
533 if ((flags & CPP_N_WIDTH) == CPP_N_SMALL)
534 itk = itk_int;
535 else if ((flags & CPP_N_WIDTH) == CPP_N_MEDIUM)
536 itk = itk_long;
537 else
538 itk = itk_long_long;
539
540
541 for (; itk < itk_none; itk += 2 /* skip signed types */)
542 {
543 tree upper = TYPE_MAX_VALUE (integer_types[itk]);
544
545 if ((unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (upper) > high
546 || ((unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (upper) == high
547 && TREE_INT_CST_LOW (upper) >= low))
548 return itk;
549 }
550
551 return itk_none;
552 }
ちなみにGCC Wikiaでは
http://ja.gcc.wikia.com/wiki/Narrowest_unsigned_type
http://ja.gcc.wikia.com/wiki/Narrowest_signed_type
ここはフラグを元に型を決めている所の一部なのだけど、
513行目からのループはsignedのついた型にするために、
unsignedは不要なので2を加えることで一個とばしで進んでいる。
(enum integer_type_kindは同じ型の符号あり、なしが並んでいる。)
コメントは「singed型を飛ばす」と訳せると思う。
となると、本来の処理と逆なのではないか。と思うわけです。
間違っていたとしてどうしたらいいもんなんだろう。
パッチをメーリングリストに流すのが一番なのかぁ。
でもなんか変な感じがする。
よかったら
このコメントが間違っているかどうかの検証と
間違っていた場合の対策を教えてくれると嬉しいです。
| 固定リンク
| コメント (1)
| トラックバック (0)
最近のコメント