expr.c (expand_expr, [...]): Only copy for misaligned if BLKmode.
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Fri, 16 Nov 2001 12:11:13 +0000 (12:11 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Fri, 16 Nov 2001 12:11:13 +0000 (07:11 -0500)
* expr.c (expand_expr, case ADDR_EXPR): Only copy for misaligned if
BLKmode.

From-SVN: r47086

gcc/ChangeLog
gcc/expr.c

index 7e8e087..0fa8eba 100644 (file)
@@ -1,3 +1,8 @@
+Fri Nov 16 07:12:51 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * expr.c (expand_expr, case ADDR_EXPR): Only copy for misaligned if
+       BLKmode.
+
 Fri Nov 16 06:37:05 2001  Andreas Tobler  <a.tobler@schweiz.ch>
 
        * config/sparc/sparc.c: Remove ALIGN arg from emit_cmp_insn.
index bce6ba0..afc43cc 100644 (file)
@@ -8652,7 +8652,8 @@ expand_expr (exp, target, tmode, modifier)
          /* If OP0 is not aligned as least as much as the type requires,
             we need to make a temporary, copy OP0 to it, and take the
             address of the temporary.  */
-         if (expr_align (TREE_OPERAND (exp, 0)) > MEM_ALIGN (op0))
+         if (GET_MODE (op0) == BLKmode
+             && expr_align (TREE_OPERAND (exp, 0)) > MEM_ALIGN (op0))
            {
              tree inner_type = TREE_TYPE (TREE_OPERAND (exp, 0));
              rtx new