This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

How to debug if scheduling in gcc is wrong?


Hi, I'm a guy working with gcc4.1.1 on itanium2. In my work, some
instrumentations are added by gcc. After instrumentation, all
specint2000 benchmarks except gzip can successfully run with
optimization flag -O3. There are some information list below:

1. Gzip can successfully run when compile with -O1(-O2 and -O3 failed).
2. When add code "while(1)" in an unreachable place in function
"huft_build", gzip can successfully run.
3. Our instrumentation add two new instruction supports to gcc, which
are tnat and single predicate compare:

Machine description file
===========================================================================================
(define_insn "shift_predicate_cmp"
  [(set (match_operand:BI 0 "register_operand" "=c")
	(and:BI (and:BI (const_int 1)
			(ne:BI  (match_operand:DI 1 "gr_reg_or_8bit_adjusted_operand" "rL")
				(match_operand:DI 2 "gr_register_operand" "r")))
		(const_int 1)))]
  ""
  "cmp.ne %0, p0 = %1, %2"
  [(set_attr "itanium_class" "icmp")])

(define_insn "shift_tnat"
  [(set (match_operand:BI 0 "register_operand" "=c")
	(unspec:BI [(match_operand:DI 1 "gr_register_operand" "r")]
		   UNSPEC_TNAT))]
  ""
  "tnat.nz %0, p0 = %1"
  [(set_attr "itanium_class" "tbit")])
============================================================================================

4. Impossible to compare compiled .s files(the one with "while(1)" vs.
the one without) since instruction scheduling make it completely
different.

My question are:
1. Whether this implementation could possibly make gcc's scheduling go wrong?
2. Is there any good way to debug such problems?

Any help are appreciated, thanks very much.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]