diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2003-04-14 21:33:05 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2003-04-14 17:33:05 -0400 |
commit | 2443af37208590b754984ffd04b8ac19db5eff9f (patch) | |
tree | 7491f2ef529da6bd1407e2f4ee48e798a42db879 | |
parent | 8cb5fbbf742615e6ca90e417ff8ad27dc481c6b5 (diff) | |
download | gcc-2443af37208590b754984ffd04b8ac19db5eff9f.zip gcc-2443af37208590b754984ffd04b8ac19db5eff9f.tar.gz gcc-2443af37208590b754984ffd04b8ac19db5eff9f.tar.bz2 |
integrate.c (expand_inline_function): Don't inline if would lose /u on a BLKmode TARGET.
* integrate.c (expand_inline_function): Don't inline if would
lose /u on a BLKmode TARGET.
From-SVN: r65594
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/integrate.c | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a53b3b6..8b0dafc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-04-14 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> + + * integrate.c (expand_inline_function): Don't inline if would + lose /u on a BLKmode TARGET. + 2003-04-14 Joel Brobecker <brobecker@gnat.com> * dwarf2out.c (gen_compile_unit_die): Emit DW_LANG_Ada95 instead diff --git a/gcc/integrate.c b/gcc/integrate.c index f26a94c..7a18658 100644 --- a/gcc/integrate.c +++ b/gcc/integrate.c @@ -736,6 +736,14 @@ expand_inline_function (fndecl, parms, target, ignore, type, return (rtx) (size_t) -1; } + /* If there is a TARGET which is a readonly BLKmode MEM and DECL_RESULT + is also a mem, we are going to lose the readonly on the stores, so don't + inline. */ + if (target != 0 && GET_CODE (target) == MEM && GET_MODE (target) == BLKmode + && RTX_UNCHANGING_P (target) && DECL_RTL_SET_P (DECL_RESULT (fndecl)) + && GET_CODE (DECL_RTL (DECL_RESULT (fndecl))) == MEM) + return (rtx) (size_t) -1; + /* Extra arguments are valid, but will be ignored below, so we must evaluate them here for side-effects. */ for (; actual; actual = TREE_CHAIN (actual)) |