aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2012-10-19 09:03:15 +1030
committerAlan Modra <amodra@gcc.gnu.org>2012-10-19 09:03:15 +1030
commitabe6d88d4a5c3bbbcc3b7d95cd82c8188933081e (patch)
treebfde550d6e2de6f56f360d428c1995af98644df9 /gcc/config/rs6000
parent13299a8e759c2c165f46cf661ef1b40e91cd831e (diff)
downloadgcc-abe6d88d4a5c3bbbcc3b7d95cd82c8188933081e.zip
gcc-abe6d88d4a5c3bbbcc3b7d95cd82c8188933081e.tar.gz
gcc-abe6d88d4a5c3bbbcc3b7d95cd82c8188933081e.tar.bz2
predicates.md (splat_input_operand): Don't call input_operand for MEMs.
* config/rs6000/predicates.md (splat_input_operand): Don't call input_operand for MEMs. Instead check for volatile and call memory_address_addr_space_p with modified mode. From-SVN: r192590
Diffstat (limited to 'gcc/config/rs6000')
-rw-r--r--gcc/config/rs6000/predicates.md6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index 99130ba..fc20a5e 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -940,12 +940,16 @@
{
if (MEM_P (op))
{
+ if (! volatile_ok && MEM_VOLATILE_P (op))
+ return 0;
if (mode == DFmode)
mode = V2DFmode;
else if (mode == DImode)
mode = V2DImode;
else
- gcc_unreachable ();
+ gcc_unreachable ();
+ return memory_address_addr_space_p (mode, XEXP (op, 0),
+ MEM_ADDR_SPACE (op));
}
return input_operand (op, mode);
})