diff options
author | Chung-Ju Wu <jasonwucj@gmail.com> | 2015-01-16 06:02:11 +0000 |
---|---|---|
committer | Chung-Ju Wu <jasonwucj@gcc.gnu.org> | 2015-01-16 06:02:11 +0000 |
commit | aa2642ef15852495d84f737010522358ed159271 (patch) | |
tree | 6537bccbdebee1d4dd2781d26e2a40794321f2f9 /gcc/config/nds32 | |
parent | f959367e8bb279a46d26d391a17b943a0fc725ef (diff) | |
download | gcc-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.md | 1 | ||||
-rw-r--r-- | gcc/config/nds32/nds32.c | 3 | ||||
-rw-r--r-- | gcc/config/nds32/nds32.md | 12 |
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")] +) + +;; ---------------------------------------------------------------------------- |