On Tue, 2011-01-18 at 16:56 +0000, Yufeng Zhang wrote: > This patch replaces define_constants in the ARM backend with > define_c_enum for defining the available indexes for the > unspecs/unspecvs expressions. This improves the readability of the > intermediate dumps for machine-specific operations. For instance, given > the following c code: > > int foo (char* s); > extern char hello[]; > > void test(int x) > { > int y = x + 4; > foo(hello); > } > > If compiled with -c -fpic, the diff of the -fdump-rtl-expand dump > between pre-patch and post-patch is: > > @@ -24,10 +24,10 @@ > (const:SI (unspec:SI [ > (const:SI (plus:SI (unspec:SI [ > (const_int 0 [0]) > - ] 21) > + ] UNSPEC_PIC_LABEL) > (const_int 8 [0x8]))) > - ] 24)) > - ] 3)) test.c:43 -1 > + ] UNSPEC_GOTSYM_OFF)) > + ] UNSPEC_PIC_SYM)) test.c:43 -1 > (nil)) > > (insn 10 9 11 2 (set (reg:SI 137) > @@ -35,7 +35,7 @@ > (reg:SI 137) > (const_int 8 [0x8]) > (const_int 0 [0]) > - ] 4)) test.c:43 -1 > + ] UNSPEC_PIC_BASE)) test.c:43 -1 > (nil)) > > (insn 11 10 5 2 (use (reg:SI 137)) test.c:43 -1 > > Having the indexes defined by define_c_enum, GCC will use the > enumerators' names rather than some magic numbers when printing out > unspec/unspec_volatile expressions. > > The patch does not change the code generation. The post-patch test > result is the same as the pre-patch result (tested on qemu for armv7-a > and arm-eabi). > > OK for the trunk? > > Cheers, > Yufeng > > > 2011-01-18 Yufeng Zhang <yufeng.zh...@arm.com> > > * config/arm/arm.md (define_constants for unspec): Replace with > define_c_enum. > (define_constants for unspecv): Replace with define_c_enum. > * config/arm/neon.md (define_constants for unspec): Replace with > define_c_enum.
OK. R.