This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH]: Disable -fweb on 68hc11
-----BEGIN PGP SIGNED MESSAGE-----
Andrew Pinski wrote:
| On Mar 3, 2004, at 13:55, Stephane Carrez wrote:
|> I've committed this patch on 3_4 to disable -fweb on 68hc11 (was
|> activated by -O3).
|> 2004-03-03 Stephane Carrez <email@example.com>
|> * config/m68hc11/m68hc11.c (m68hc11_override_options): Disable -fweb
|> because it breaks the 32-bit shift patterns that rely on a match_dup.
|> (print_operand): Don't print a * before the base address.
| This is wrong, the problem is caused by the machine description file use
| of match_dup
| instead of match_clobber.
| Andrew Pinski
I don't understand your point. There is no match_clobber. FYI, below
is the insn definition.
~ [(set (match_operand:SI 0 "register_operand" "+D")
(ashift:SI (match_dup 0)
(match_operand:HI 1 "const_int_operand" "")))
~ (clobber (match_scratch:HI 2 "=y"))]
~ return \"ldy\\t%1\\n\\tbsr\\t___ashlsi3\";
The whole point of using match_dup here is to have only one 32-bit operand.
If there were 2, (even one defined with "0" constraint), reloading could fail.
FYI, the clobber is correctly recognized (if it was your point). The recog
really failed because match_dup identified a different operand.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
Comment: Using GnuPG with Netscape - http://enigmail.mozdev.org
-----END PGP SIGNATURE-----