Fix alpha-vms packed-1 failure.
authorJim Wilson <wilson@cygnus.com>
Tue, 31 Mar 1998 19:24:52 +0000 (19:24 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Tue, 31 Mar 1998 19:24:52 +0000 (11:24 -0800)
* alpha.c (alpha_expand_unaligned_load): Use tgt instead of addr
as dest of expand_binop call.

From-SVN: r18921

gcc/ChangeLog
gcc/config/alpha/alpha.c

index 9f8b341..6a0f856 100644 (file)
@@ -1,5 +1,8 @@
 Tue Mar 31 16:57:33 1998  Jim Wilson  <wilson@cygnus.com>
 
+       * alpha.c (alpha_expand_unaligned_load): Use tgt instead of addr
+       as dest of expand_binop call.
+
        * alpha.md (extzv): Correct check for valid operand[2] values.
 
        * profile.c (branch_prob): Add code to recognize HPPA tablejump entry
index 171b311..43aeab3 100644 (file)
@@ -1337,7 +1337,10 @@ alpha_expand_unaligned_load (tgt, mem, size, ofs, sign)
       emit_insn (gen_extxl (extl, meml, GEN_INT (64), addr));
       emit_insn (gen_extqh (exth, memh, addr));
 
-      addr = expand_binop (DImode, ior_optab, extl, exth, addr, 1, OPTAB_WIDEN);
+      /* We must use tgt here for the target.  Alpha-vms port fails if we use
+        addr for the target, because addr is marked as a pointer and combine
+        knows that pointers are always sign-extended 32 bit values.  */
+      addr = expand_binop (DImode, ior_optab, extl, exth, tgt, 1, OPTAB_WIDEN);
       addr = expand_binop (DImode, ashr_optab, addr, GEN_INT (48), 
                           addr, 1, OPTAB_WIDEN);
     }