aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/sparc/sparc.c6
2 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c3bc6c5..cd24b1e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2000-03-21 Jakub Jelinek <jakub@redhat.com>
+
+ * config/sparc/sparc.c (mem_min_alignment): If not optimizing,
+ we cannot be sure that if reload_completed base register will
+ be properly aligned.
+
2000-03-21 Richard Henderson <rth@cygnus.com>
* flow.c (delete_block): Fix typo last change.
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index f7e0c22..5a9c87b 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -2825,9 +2825,11 @@ mem_min_alignment (mem, desired)
{
/* Check if the compiler has recorded some information
about the alignment of the base REG. If reload has
- completed, we already matched with proper alignments. */
+ completed, we already matched with proper alignments.
+ If not running global_alloc, reload might give us
+ unaligned pointer to local stack though. */
if (((cfun != 0 && REGNO_POINTER_ALIGN (regno) >= desired)
- || reload_completed)
+ || (optimize && reload_completed))
&& ((INTVAL (offset) & (desired - 1)) == 0))
return 1;
}