This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Profiling on S390
- From: "Ulrich Weigand" <Ulrich dot Weigand at de dot ibm dot com>
- To: Jan Hubicka <jh at suse dot cz>
- Cc: rth at redhat dot com, gcc at gcc dot gnu dot org, aj at suse dot de
- Date: Wed, 23 Apr 2003 19:20:58 +0200
- Subject: Re: Profiling on S390
- Sensitivity:
I wrote:
>The quick fix would be to fall back on CLCL in all cases, like
>below. I'll see if I can think of something better ...
I've disabled the CLC loop for now and always emit CLCL. This is
not really a big deal performance-wise, and it actually was the
behaviour of all previous GCC versions, so it should be acceptable
for 3.3. Maybe we can do something better for 3.4 ...
Bootstrapped/regtested on s390-ibm-linux and s390x-ibm-linux on
3.3 and head; applied to both.
ChangeLog:
* config/s390/s390.c (s390_expand_cmpstr): Disable CLC loop.
Index: gcc/config/s390/s390.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/s390/s390.c,v
retrieving revision 1.70.2.7
diff -c -p -r1.70.2.7 s390.c
*** gcc/config/s390/s390.c 10 Apr 2003 16:41:31 -0000 1.70.2.7
--- gcc/config/s390/s390.c 23 Apr 2003 12:55:31 -0000
*************** s390_expand_cmpstr (target, op0, op1, le
*** 2794,2800 ****
emit_move_insn (target, const0_rtx);
}
! else if (TARGET_MVCLE)
{
enum machine_mode double_mode = TARGET_64BIT ? TImode : DImode;
enum machine_mode single_mode = TARGET_64BIT ? DImode : SImode;
--- 2794,2800 ----
emit_move_insn (target, const0_rtx);
}
! else /* if (TARGET_MVCLE) */
{
enum machine_mode double_mode = TARGET_64BIT ? TImode : DImode;
enum machine_mode single_mode = TARGET_64BIT ? DImode : SImode;
*************** s390_expand_cmpstr (target, op0, op1, le
*** 2813,2818 ****
--- 2813,2821 ----
emit_insn ((*gen_result) (target));
}
+ #if 0
+ /* Deactivate for now as profile code cannot cope with
+ CC being live across basic block boundaries. */
else
{
rtx addr0, addr1, count, blocks, temp;
*************** s390_expand_cmpstr (target, op0, op1, le
*** 2878,2883 ****
--- 2881,2887 ----
emit_insn ((*gen_result) (target));
}
+ #endif
}
/* In the name of slightly smaller debug output, and to cater to
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand
Linux for S/390 Design & Development
IBM Deutschland Entwicklung GmbH, Schoenaicher Str. 220, 71032 Boeblingen
Phone: +49-7031/16-3727 --- Email: Ulrich dot Weigand at de dot ibm dot com