This is the mail archive of the gcc-patches@gcc.gnu.org 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, i386]: Fix PR 36079 [4.3/4.4 Regression] cld instruction is not emitted anymore.


On Tue, May 20, 2008 at 2:47 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
> Hello!
>
>  OK, here is the controversial patch that enables cld instruction with
>  -mcld. It includes --enable-cld configure option, and in this case
>  -mno-cld disables generation of cld instructions.
>
>  2008-05-20  Uros Bizjak  <ubizjak@gmail.com>
>
>         PR target/36079
>         * configure.ac: Handle --enable-cld.
>         * configure.in: Regenerate.
>         * configure.ac: Ditto.
>         * config/i386/i386.h (TARGET_CLD): New define.
>         (struct machine_function): Add needs_cld field.
>         (ix86_current_function_needs_cld): New define.
>         * config/i386/i386.md (UNSPEC_CLD): New unspec volatile constant.
>         ("cld"): New isns pattern.
>         ("strmov_singleop"): Set ix86_current_function_needs_cld flag.
>         ("rep_mov"): Ditto.
>         ("strset_singleop"): Ditto.
>         ("rep_stos"): Ditto.
>         ("cmpstrnqi_nz_1"): Ditto.
>         ("cmpstrnqi_1"): Ditto.
>         ("strlenqi_1"): Ditto.
>         * config/i386/i386.opt (mcld, mno-cld): New options.
>         * config/i386/i386.c (ix86_expand_prologue): Emit cld insn for
>         when ix86_current_function_needs_cld is set and when combination
>         of configure and compile options allow it.
>
>  The patch was bootstrapped and regression tested on i686-pc-linux-gnu
>  a month or so ago. Currently vanila (without patch!) gcc-4_3 branch
>  doesn't build for me, it dies with:
>
>  gcc -c   -g -fkeep-inline-functions -DIN_GCC   -W -Wall
>  -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
>  -Wold-style-definition -Wmissing-format-attribute -pedantic
>  -Wno-long-long -Wno-variadic-macros      -Wno-overlength-strings
>  -fno-common   -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild
>  -I../../gcc-svn/branches/gcc-4_3-branch/gcc
>  -I../../gcc-svn/branches/gcc-4_3-branch/gcc/build
>  -I../../gcc-svn/branches/gcc-4_3-branch/gcc/../include
>  -I../../gcc-svn/branches/gcc-4_3-branch/gcc/../libcpp/include
>  -I/usr/local/include
>  -I../../gcc-svn/branches/gcc-4_3-branch/gcc/../libdecnumber
>  -I../../gcc-svn/branches/gcc-4_3-branch/gcc/../libdecnumber/bid
>  -I../libdecnumber    -o build/errors.o
>  ../../gcc-svn/branches/gcc-4_3-branch/gcc/errors.c
>  build/genmodes -h > tmp-modes.h
>  /bin/sh: build/genmodes: No such file or directory
>  gmake[3]: *** [s-modes-h] Error 127

I have bootstrapped and tested this patch successfully on i686-pc-linux-gnu
with --enable-cld.

Richard.


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