Actions
Bug #11645
closedSince r52422, failed to compile parse.y on Solaris 10 with Oracle Solaris Studio 12.3
Description
Solaris 10 にて、 Oracle Solaris Studio 12.3 にて、parse.y (から生成された parse.c)のコンパイルに失敗します。
ruby --disable=gems ./tool/id2token.rb --path-separator=.:./ --vpath=.ext/include/sparc64-solaris2.10/ruby:./include/ruby:./missing id.h parse.y > parse.tmp.y
bison -d -o y.tab.c parse.tmp.y
rm -f parse.tmp.y
sed -f ./tool/ytab.sed -e "/^#/s!parse\.tmp\.[iy]!parse.y!" -e "/^#/s!y\.tab\.c!parse.c!" y.tab.c > parse.c.new
mv parse.c.new parse.c
sed -e "/^#line.*y\.tab\.h/d;/^#line.*parse.*\.y/d" y.tab.h > parse.h
rm -f y.tab.c y.tab.h
+ cp ./lex.c.blt lex.c
cc -xO4 -xtarget=sparc64viiplus -m64 -DRUBY_EXPORT -I/usr/local/64/lib/libffi-3.0.10/include -I/usr/local/64/include -I. -I.ext/include/sparc64-solaris2.10 -I./include -I. -o parse.o -c parse.c
"parse.y", line 1256: operands have incompatible types:
void ":" int
"parse.y", line 1721: operands have incompatible types:
void ":" int
"parse.y", line 1813: operands have incompatible types:
void ":" int
"parse.y", line 2061: operands have incompatible types:
void ":" int
"defs/keywords", line 174: warning: initializer will be sign-extended: -1
"defs/keywords", line 174: warning: initializer will be sign-extended: -1
"defs/keywords", line 174: warning: initializer will be sign-extended: -1
"defs/keywords", line 174: warning: initializer will be sign-extended: -1
"defs/keywords", line 174: warning: initializer will be sign-extended: -1
"defs/keywords", line 174: warning: initializer will be sign-extended: -1
"defs/keywords", line 174: warning: initializer will be sign-extended: -1
"defs/keywords", line 174: warning: initializer will be sign-extended: -1
"defs/keywords", line 22: warning: initializer will be sign-extended: -1
"defs/keywords", line 22: warning: initializer will be sign-extended: -1
cc: acomp failed for parse.c
make: *** [parse.o] Error 2
3項演算子の後ろ2項は同じ型である必要がある、というエラーのようです。
r52422にてparse.yに追加された以下のマクロが原因と思われます。
+#define NO_QCALL(q, here) \
+ ((q) != tDOTQ ? (void)0 : \
+ yyerror(".? in "here" is not supported yet"))
Updated by ngoto (Naohisa Goto) over 9 years ago
- Status changed from Open to Closed
Applied in changeset r52424.
- parse.y (NO_QCALL): fix type mismatch of operands that causes
compile error with Oracle Solaris Studio on Solaris.
[Bug #11645] [ruby-dev:49327]
Actions
Like0
Like0