diff options
author | Richard Henderson <rth@redhat.com> | 2007-02-13 09:29:35 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2007-02-13 09:29:35 -0800 |
commit | 138ae41e4d1de35af5bfd0573b60bfd92dd57f18 (patch) | |
tree | 9c09e112e85590173d6a411e13d13c54b5a34ef9 /gcc | |
parent | ea20d970169c0a0641838675b462d581215f706c (diff) | |
download | gcc-138ae41e4d1de35af5bfd0573b60bfd92dd57f18.zip gcc-138ae41e4d1de35af5bfd0573b60bfd92dd57f18.tar.gz gcc-138ae41e4d1de35af5bfd0573b60bfd92dd57f18.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 14 |
2 files changed, 15 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 96ff9ac..e1afa71 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 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, remove flags clobber. (bswapsi2): New expander, emit code for !TARGET_BSWAP. diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 1c5a159..b980857 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -5860,11 +5860,15 @@ va_list_skip_additions (tree lhs) ? ap.__offset + cst - 48 : ap.__offset + cst) + cst2). If the former, indicate that GPR 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 - regs and cfun->va_list_fpr_size is a bitmask, bit 0 set if - GPR 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 - statement. */ + regs and cfun->va_list_fpr_size is a bitmask, bit 0 set if GPR + 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 statement. */ static bool 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; int offset_arg = 1; + while (handled_component_p (rhs)) + rhs = TREE_OPERAND (rhs, 0); if (TREE_CODE (rhs) != INDIRECT_REF || TREE_CODE (TREE_OPERAND (rhs, 0)) != SSA_NAME) return false; |