This pattern fixes the following ICE found compiling ArabicShaping.cpp:
g++-4.7 -D_REENTRANT -I. -I./.. -I../common -I./unicode -
DU_ATTRIBUTE_DEPRECATED= -DU_LAYOUT_IMPLEMENTATION -D__NO_MATH_INLINES
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DNDEBUG -
D_FORTIFY_SOURCE=2 -DGCC_HIDDEN_VISIBILITY -B/usr/bin -fexceptions -
funsigned-char -fno-strict-aliasing -g -pipe -fPIC -pthread -Wall -
Wcast-align -Wno-trigraphs -Wextra -Wno-missing-field-initializers -
std=gnu++11 -fvisibility=hidden -fprofile-use -Wcoverage-mismatch -
fprofile-correction -O2 -W -Wall -pedantic -Wpointer-arith -Wwrite-
strings -Wno-long-long -std=c++11 -c -DPIC -fPIC -o ArabicShaping.o
ArabicShaping.cpp
ArabicShaping.cpp: In static member function 'static
icu_50::ArabicShaping::ShapeType
icu_50::ArabicShaping::getShapeType(LEUnicode)':
ArabicShaping.cpp:36:94: warning: cast from 'const le_uint8* {aka
const unsigned char*}' to 'const icu_50::ClassDefinitionTable*'
increases required alignment of target type [-Wcast-align]
ArabicShaping.cpp: In static member function 'static void
icu_50::ArabicShaping::shape(const LEUnicode*, le_int32, le_int32,
le_int32, le_bool, icu_50::LEGlyphStorage&)':
ArabicShaping.cpp:210:1: note: file /net/usr.work/d036493/hppa/
CGK_ls3011_v29/i18n/icu/50.1/icu/source/layout/ArabicShaping.gcda not
found, execution counts estimated
ArabicShaping.cpp:208:1: error: unrecognizable insn:
(insn 272 271 273 33 (set (reg:SI 298)
(ne:SI (const_int 0 [0])
(const_int 0 [0]))) ArabicShaping.cpp:201 -1
(nil))
ArabicShaping.cpp:208:1: internal compiler error: in extract_insn, at
recog.c:2123
The expander allowed a "const_int 0" operand 1 but the subsequent
patterns didn't. The patch fixes
this inconsistency.
Tested on hppa2.0w-hp-hpux11.11 and hppa64-hp-hpux11.11. Applied to
active branches.
Dave
--
John David Anglin dave.ang...@bell.net
2013-09-01 John David Anglin <dang...@gcc.gnu.org>
* config/pa/pa.md: Allow "const_int 0" operand 1 in "scc" insns.
Index: config/pa/pa.md
===================================================================
--- config/pa/pa.md (revision 202083)
+++ config/pa/pa.md (working copy)
@@ -833,7 +833,7 @@
(define_insn "scc"
[(set (match_operand:SI 0 "register_operand" "=r")
(match_operator:SI 3 "comparison_operator"
- [(match_operand:SI 1 "register_operand" "r")
+ [(match_operand:SI 1 "reg_or_0_operand" "rM")
(match_operand:SI 2 "arith11_operand" "rI")]))]
""
"{com%I2clr|cmp%I2clr},%B3 %2,%1,%0\;ldi 1,%0"
@@ -843,7 +843,7 @@
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r")
(match_operator:DI 3 "comparison_operator"
- [(match_operand:DI 1 "register_operand" "r")
+ [(match_operand:DI 1 "reg_or_0_operand" "rM")
(match_operand:DI 2 "arith11_operand" "rI")]))]
"TARGET_64BIT"
"cmp%I2clr,*%B3 %2,%1,%0\;ldi 1,%0"
@@ -853,10 +853,10 @@
(define_insn "iorscc"
[(set (match_operand:SI 0 "register_operand" "=r")
(ior:SI (match_operator:SI 3 "comparison_operator"
- [(match_operand:SI 1 "register_operand" "r")
+ [(match_operand:SI 1 "reg_or_0_operand" "rM")
(match_operand:SI 2 "arith11_operand"
"rI")])
(match_operator:SI 6 "comparison_operator"
- [(match_operand:SI 4 "register_operand" "r")
+ [(match_operand:SI 4 "reg_or_0_operand" "rM")
(match_operand:SI 5 "arith11_operand"
"rI")])))]
""
"{com%I2clr|cmp%I2clr},%S3 %2,%1,%%r0\;{com%I5clr|cmp%I5clr},%B6
%5,%4,%0\;ldi 1,%0"
@@ -866,10 +866,10 @@
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r")
(ior:DI (match_operator:DI 3 "comparison_operator"
- [(match_operand:DI 1 "register_operand" "r")
+ [(match_operand:DI 1 "reg_or_0_operand" "rM")
(match_operand:DI 2 "arith11_operand"
"rI")])
(match_operator:DI 6 "comparison_operator"
- [(match_operand:DI 4 "register_operand" "r")
+ [(match_operand:DI 4 "reg_or_0_operand" "rM")
(match_operand:DI 5 "arith11_operand"
"rI")])))]
"TARGET_64BIT"
"cmp%I2clr,*%S3 %2,%1,%%r0\;cmp%I5clr,*%B6 %5,%4,%0\;ldi 1,%0"
@@ -881,7 +881,7 @@
(define_insn "negscc"
[(set (match_operand:SI 0 "register_operand" "=r")
(neg:SI (match_operator:SI 3 "comparison_operator"
- [(match_operand:SI 1 "register_operand" "r")
+ [(match_operand:SI 1 "reg_or_0_operand" "rM")
(match_operand:SI 2 "arith11_operand" "rI")])))]
""
"{com%I2clr|cmp%I2clr},%B3 %2,%1,%0\;ldi -1,%0"
@@ -891,7 +891,7 @@
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r")
(neg:DI (match_operator:DI 3 "comparison_operator"
- [(match_operand:DI 1 "register_operand" "r")
+ [(match_operand:DI 1 "reg_or_0_operand" "rM")
(match_operand:DI 2 "arith11_operand" "rI")])))]
"TARGET_64BIT"
"cmp%I2clr,*%B3 %2,%1,%0\;ldi -1,%0"