diff options
author | hp <hp@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-06-09 20:53:39 +0000 |
---|---|---|
committer | hp <hp@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-06-09 20:53:39 +0000 |
commit | 32354eaf96bb0c3e2204542d91dc2ec9508dfd9d (patch) | |
tree | 04feb51f47a5381f3cb1809ede5b7871ffe76c17 /gcc/config | |
parent | 2c223cf2ab751aa81dc4bd9caec5cae0bfb78cbb (diff) | |
download | gcc-32354eaf96bb0c3e2204542d91dc2ec9508dfd9d.tar.gz |
Fix CRIS build errors with --enable-build-with-cxx.
* config/cris/cris.c (cris_emit_trap_for_misalignment): Rename
variable "and" to "andop".
* config/cris/sync.md ("atomic_fetch_<atomic_op_name><mode>"): Use
temporary variable for memory model, passing C++-type-correct
parameter type to expand_mem_thread_fence.
("atomic_compare_and_swap<mode>"): Ditto.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@188362 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/cris/cris.c | 6 | ||||
-rw-r--r-- | gcc/config/cris/sync.md | 12 |
2 files changed, 11 insertions, 7 deletions
diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c index 947a6a51416..f5bd6dbdb3a 100644 --- a/gcc/config/cris/cris.c +++ b/gcc/config/cris/cris.c @@ -1929,7 +1929,7 @@ cris_simple_epilogue (void) void cris_emit_trap_for_misalignment (rtx mem) { - rtx addr, reg, ok_label, and, jmp; + rtx addr, reg, ok_label, andop, jmp; int natural_alignment; gcc_assert (MEM_P (mem)); @@ -1941,8 +1941,8 @@ cris_emit_trap_for_misalignment (rtx mem) /* This will yield a btstq without a separate register used, usually - with the exception for PRE hoisting the "and" but not the branch around the trap: see gcc.dg/target/cris/sync-3s.c. */ - and = gen_rtx_AND (Pmode, reg, GEN_INT (natural_alignment - 1)); - emit_cmp_and_jump_insns (force_reg (SImode, and), const0_rtx, EQ, + andop = gen_rtx_AND (Pmode, reg, GEN_INT (natural_alignment - 1)); + emit_cmp_and_jump_insns (force_reg (SImode, andop), const0_rtx, EQ, NULL_RTX, Pmode, 1, ok_label); jmp = get_last_insn (); gcc_assert (JUMP_P (jmp)); diff --git a/gcc/config/cris/sync.md b/gcc/config/cris/sync.md index 6acd2b61158..d0cc3b28e4e 100644 --- a/gcc/config/cris/sync.md +++ b/gcc/config/cris/sync.md @@ -88,14 +88,16 @@ (atomic_op:BWD (match_dup 0) (match_dup 1))] "" { + enum memmodel mmodel = (enum memmodel) INTVAL (operands[3]); + if (<MODE>mode != QImode && TARGET_TRAP_UNALIGNED_ATOMIC) cris_emit_trap_for_misalignment (operands[1]); - expand_mem_thread_fence (INTVAL (operands[3])); + expand_mem_thread_fence (mmodel); emit_insn (gen_cris_atomic_fetch_<atomic_op_name><mode>_1 (operands[0], operands[1], operands[2])); - expand_mem_thread_fence (INTVAL (operands[3])); + expand_mem_thread_fence (mmodel); DONE; }) @@ -189,16 +191,18 @@ (match_operand 7)] "" { + enum memmodel mmodel = (enum memmodel) INTVAL (operands[6]); + if (<MODE>mode != QImode && TARGET_TRAP_UNALIGNED_ATOMIC) cris_emit_trap_for_misalignment (operands[2]); - expand_mem_thread_fence (INTVAL (operands[6])); + expand_mem_thread_fence (mmodel); emit_insn (gen_cris_atomic_compare_and_swap<mode>_1 (operands[0], operands[1], operands[2], operands[3], operands[4])); - expand_mem_thread_fence (INTVAL (operands[6])); + expand_mem_thread_fence (mmodel); DONE; }) |