aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/nds32
diff options
context:
space:
mode:
authorChung-Ju Wu <jasonwucj@gmail.com>2015-01-16 06:02:11 +0000
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>2015-01-16 06:02:11 +0000
commitaa2642ef15852495d84f737010522358ed159271 (patch)
tree6537bccbdebee1d4dd2781d26e2a40794321f2f9 /gcc/config/nds32
parentf959367e8bb279a46d26d391a17b943a0fc725ef (diff)
downloadgcc-aa2642ef15852495d84f737010522358ed159271.zip
gcc-aa2642ef15852495d84f737010522358ed159271.tar.gz
gcc-aa2642ef15852495d84f737010522358ed159271.tar.bz2
[NDS32] Fix wrong data flow when building nds32 target with --enable-checking=yes.
gcc/ * config/nds32/constants.md (UNSPEC_VOLATILE_POP25_RETURN): New. * config/nds32/nds32.md (pop25return): New. * config/nds32/nds32.c (nds32_expand_epilogue_v3pop): Emit pop25return pattern. From-SVN: r219710
Diffstat (limited to 'gcc/config/nds32')
-rw-r--r--gcc/config/nds32/constants.md1
-rw-r--r--gcc/config/nds32/nds32.c3
-rw-r--r--gcc/config/nds32/nds32.md12
3 files changed, 16 insertions, 0 deletions
diff --git a/gcc/config/nds32/constants.md b/gcc/config/nds32/constants.md
index 1c37c5f..ea1cd4c 100644
--- a/gcc/config/nds32/constants.md
+++ b/gcc/config/nds32/constants.md
@@ -41,6 +41,7 @@
UNSPEC_VOLATILE_MTUSR
UNSPEC_VOLATILE_SETGIE_EN
UNSPEC_VOLATILE_SETGIE_DIS
+ UNSPEC_VOLATILE_POP25_RETURN
])
;; ------------------------------------------------------------------------
diff --git a/gcc/config/nds32/nds32.c b/gcc/config/nds32/nds32.c
index f7d5e70..d38ea89 100644
--- a/gcc/config/nds32/nds32.c
+++ b/gcc/config/nds32/nds32.c
@@ -3449,6 +3449,9 @@ nds32_expand_epilogue_v3pop (void)
nds32_emit_stack_v3pop (Rb, Re,
GEN_INT (14), GEN_INT (0));
}
+
+ /* Generate return instruction. */
+ emit_jump_insn (gen_pop25return ());
}
/* ------------------------------------------------------------------------ */
diff --git a/gcc/config/nds32/nds32.md b/gcc/config/nds32/nds32.md
index 8302969..01faa68 100644
--- a/gcc/config/nds32/nds32.md
+++ b/gcc/config/nds32/nds32.md
@@ -2253,3 +2253,15 @@ create_template:
(set_attr "length" "4")])
;; ----------------------------------------------------------------------------
+
+;; Pseudo NOPs
+
+(define_insn "pop25return"
+ [(return)
+ (unspec_volatile:SI [(reg:SI LP_REGNUM)] UNSPEC_VOLATILE_POP25_RETURN)]
+ ""
+ "! return for pop 25"
+ [(set_attr "length" "0")]
+)
+
+;; ----------------------------------------------------------------------------