On 3 Sep 2012, at 11:18, Kaz Kojima <kkoj...@rr.iij4u.or.jp> wrote:
Oleg Endo <oleg.e...@t-online.de> wrote:
--- gcc/config/sh/sh.c (revision 190840)
+++ gcc/config/sh/sh.c (working copy)
@@ -21,6 +21,12 @@
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
+/* FIXME: This is a temporary hack, so that we can include
<algorithm>
+ below. <algorithm> will try to include <cstdlib> which will
reference
+ malloc & co, which are poisoned by "system.h". The proper
solution is
+ to include <cstdlib> in "system.h" instead of <stdlib.h>. */
+#include <cstdlib>
+
#include "config.h"
#include "system.h"
#include "coretypes.h"
[snip]
@@ -1791,65 +1798,124 @@
}
}
-enum rtx_code
-prepare_cbranch_operands (rtx *operands, enum machine_mode mode,
- enum rtx_code comparison)
+// Implement the CANONICALIZE_COMPARISON macro for the combine pass.
+// This function is also re-used to canonicalize comparisons in
cbranch
+// pattern expanders.
+void
+sh_canonicalize_comparison (enum rtx_code& cmp, rtx& op0, rtx& op1,
+ enum machine_mode mode)
{
- rtx op1;
- rtx scratch = NULL_RTX;
+ // When invoked from within the combine pass the mode is not
specified,
+ // so try to get it from one of the operands.
+ if (mode == VOIDmode)
+ mode = GET_MODE (op0);
I'm not sure that the mixture of C and C++ style long comments
in one .c file is OK with the current gcc coding style. Could
you point me to a reference for that?
Sorry, I can't. At least The C++ conventions wiki page doesn't
mention this. Maybe somebody else can comment on this, please?
In any case, I have no problem with changing the multi line comments
to /* ... */. Just let me know.
Cheers,
Oleg