This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, i386]: Fix PR 36079 [4.3/4.4 Regression] cld instruction is not emitted anymore.
- From: "Richard Guenther" <richard dot guenther at gmail dot com>
- To: "Uros Bizjak" <ubizjak at gmail dot com>
- Cc: "GCC Patches" <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 20 May 2008 17:04:42 +0200
- Subject: Re: [PATCH, i386]: Fix PR 36079 [4.3/4.4 Regression] cld instruction is not emitted anymore.
- References: <5787cf470805200547l1b14b7e9pe7d51d15cc159651@mail.gmail.com>
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.