This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Patch: enabling 1st insn scheduling for sh4.

DJ Delorie wrote:

Thanks, DJ. I tought about a solution. I think that insn changing stack pointer is more preferable than one using it (because in the second case there is bigger probability that insn which is not really a part of call sequence will be a part of the schedule group). So the patch should insert the insn changing the stack pointer into the schedule group.

I could write the patch and submit it on Friday. In this case somebody should review it. If you prefer to write the patch yourself, I review and approve it as soon as I get it. What do you prefer?

My original patch only checked for stack adjustments, not any stack usage. I've tweaked it a bit to be clearer what it's trying to test for:

Ok, DJ. Your approach is also acceptable. Sometimes a more general solution is not good too. The problems should be solved when they come. Stack pointer is not really used for addressing before reload register elimination. So the probability including an insn using stack pointer which is really not a part of the schedule group is also small (may be alloca).

I approve your patch if you add MINUS (not only PLUS) too to check the stack adjustment.


Index: sched-deps.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/sched-deps.c,v retrieving revision 1.68 diff -p -C2 -r1.68 sched-deps.c *** sched-deps.c 3 Feb 2004 05:39:53 -0000 1.68 --- sched-deps.c 26 Feb 2004 06:20:32 -0000 *************** sched_analyze_insn (struct deps *deps, r *** 1128,1132 **** if (GET_CODE (tmp) == SUBREG) tmp = SUBREG_REG (tmp); ! if (GET_CODE (tmp) == REG) src_regno = REGNO (tmp); else --- 1128,1137 ---- if (GET_CODE (tmp) == SUBREG) tmp = SUBREG_REG (tmp); ! if (GET_CODE (tmp) == PLUS ! && GET_CODE (XEXP (tmp, 0)) == REG ! && REGNO (XEXP (tmp, 0)) == STACK_POINTER_REGNUM ! && dest_regno == STACK_POINTER_REGNUM) ! src_regno = STACK_POINTER_REGNUM; ! else if (GET_CODE (tmp) == REG) src_regno = REGNO (tmp); else

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]