豊福です。

[ruby-dev:8551] えぐちさん
>> > (x)<<(signed int)(y) だと、hpux では両方に SAR に相当する
>> > コードを生成してしまう気がします。(手元にないので未検証)
>>     ((unsigned)-1)>>((signed)1) != ((unsigned)-1)
                                   ^^
                                   == のつもりでした。
>> になりはしないかという話ですよね。一応 HP-UX10 では
>> 大丈夫のようです。
> 
> これは、[ruby-dev:8550] の通り、大丈夫ぢゃないですね。

  あれ? 紛らわしかったんですが、結局は大丈夫だと
いうつもりで書いたんです。
  改めて書くと
      long x = -1;
      unsigned long ux = -1;
      printf("%x\n",  x>>((int)1));      /* ffffffff */
      printf("%x\n", ux>>((int)1));      /* 7fffffff */
なので、
少なくとも HP-UX 10 では ((x)>>((int)(y))) でOK。
と、思ったんですが勘違いしてます?
---
                        豊福
                        toyofuku / juice.or.jp