Commit 138ae41e by Richard Henderson Committed by Richard Henderson

alpha.c (alpha_stdarg_optimize_hook): Strip handled_component_p before looking…

alpha.c (alpha_stdarg_optimize_hook): Strip handled_component_p before looking for the indirect_ref.

        * config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
        handled_component_p before looking for the indirect_ref.

From-SVN: r121886
parent ea20d970
2007-02-13 Richard Henderson <rth@redhat.com> 2007-02-13 Richard Henderson <rth@redhat.com>
* config/alpha/alpha.c (alpha_stdarg_optimize_hook): Strip
handled_component_p before looking for the indirect_ref.
2007-02-13 Richard Henderson <rth@redhat.com>
* config/i386/i386.md (bswapsi_1): Rename from bswapsi2, * config/i386/i386.md (bswapsi_1): Rename from bswapsi2,
remove flags clobber. remove flags clobber.
(bswapsi2): New expander, emit code for !TARGET_BSWAP. (bswapsi2): New expander, emit code for !TARGET_BSWAP.
......
...@@ -5860,11 +5860,15 @@ va_list_skip_additions (tree lhs) ...@@ -5860,11 +5860,15 @@ va_list_skip_additions (tree lhs)
? ap.__offset + cst - 48 : ap.__offset + cst) + cst2). ? ap.__offset + cst - 48 : ap.__offset + cst) + cst2).
If the former, indicate that GPR registers are needed, If the former, indicate that GPR registers are needed,
if the latter, indicate that FPR registers are needed. if the latter, indicate that FPR registers are needed.
Also look for LHS = (*ptr).field, where ptr is one of the forms
listed above.
On alpha, cfun->va_list_gpr_size is used as size of the needed On alpha, cfun->va_list_gpr_size is used as size of the needed
regs and cfun->va_list_fpr_size is a bitmask, bit 0 set if regs and cfun->va_list_fpr_size is a bitmask, bit 0 set if GPR
GPR registers are needed and bit 1 set if FPR registers are needed. registers are needed and bit 1 set if FPR registers are needed.
Return true if va_list references should not be scanned for the current Return true if va_list references should not be scanned for the
statement. */ current statement. */
static bool static bool
alpha_stdarg_optimize_hook (struct stdarg_info *si, tree lhs, tree rhs) alpha_stdarg_optimize_hook (struct stdarg_info *si, tree lhs, tree rhs)
...@@ -5872,6 +5876,8 @@ alpha_stdarg_optimize_hook (struct stdarg_info *si, tree lhs, tree rhs) ...@@ -5872,6 +5876,8 @@ alpha_stdarg_optimize_hook (struct stdarg_info *si, tree lhs, tree rhs)
tree base, offset, arg1, arg2; tree base, offset, arg1, arg2;
int offset_arg = 1; int offset_arg = 1;
while (handled_component_p (rhs))
rhs = TREE_OPERAND (rhs, 0);
if (TREE_CODE (rhs) != INDIRECT_REF if (TREE_CODE (rhs) != INDIRECT_REF
|| TREE_CODE (TREE_OPERAND (rhs, 0)) != SSA_NAME) || TREE_CODE (TREE_OPERAND (rhs, 0)) != SSA_NAME)
return false; return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment