Ok, Adding the testsuite maintainers in the loop. Should I commit the tests once approved or would it be preferable to wait for PATCH 2/3 to be rewritten and approved?
I would advocate for the former but I'm fine with the latter. Best regards, Thomas > -----Original Message----- > From: Richard Earnshaw > Sent: Wednesday, January 14, 2015 2:53 PM > To: Thomas Preud'homme; Tony Wang; gcc-patches@gcc.gnu.org > Cc: Ramana Radhakrishnan > Subject: Re: [PATCH 3/3, ARM, libgcc, ping6] Code size optimization for > the fmul/fdiv and dmul/ddiv function in libgcc > > On 14/01/15 11:57, Thomas Preud'homme wrote: > > Ping? > > > > I'm OK with this, but I think you also need a generic testsuite > maintainer to go over the target independent parts. > > R. > > >> -----Original Message----- > >> From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches- > >> ow...@gcc.gnu.org] On Behalf Of Thomas Preud'homme > >> Sent: Thursday, November 13, 2014 4:05 PM > >> To: Tony Wang; gcc-patches@gcc.gnu.org > >> Cc: Richard Earnshaw; Ramana Radhakrishnan > >> Subject: RE: [PATCH 3/3, ARM, libgcc, ping5] Code size optimization > for > >> the fmul/fdiv and dmul/ddiv function in libgcc > >> > >> [Taking over Tony's patch] > >> > >> Ping? > >> > >> Best regards, > >> > >> Thomas > >> > >>> -----Original Message----- > >>> From: gcc-patches-ow...@gcc.gnu.org [mailto:gcc-patches- > >>> ow...@gcc.gnu.org] On Behalf Of Tony Wang > >>> Sent: Thursday, August 21, 2014 7:15 AM > >>> To: gcc-patches@gcc.gnu.org > >>> Subject: [PATCH 3/3,ARM,libgcc]Code size optimization for the > >> fmul/fdiv > >>> and dmul/ddiv function in libgcc > >>> > >>> Step 3: Test cases to verify the code size reduction. > >>> > >>> gcc/gcc/testsuite/ChangeLog: > >>> 2014-08-21 Tony Wang <tony.w...@arm.com> > >>> > >>> * gcc.target/arm/size-optimization-ieee-1.c: New test case > >>> * gcc.target/arm/size-optimization-ieee-2.c: New test case > >>> * lib/gcc-dg.exp: Add new function scan-symbol-common, scan- > >>> symbol-yes, > >>> scan-symbol-no to scan a user defined symbol in final elf file > >>> > >>> BR, > >>> Tony > >>> > >>> diff --git a/gcc/testsuite/gcc.target/arm/size-optimization-ieee-1.c > >>> b/gcc/testsuite/gcc.target/arm/size-optimization-ieee-1.c > >>> new file mode 100644 > >>> index 0000000..46e9cdf > >>> --- /dev/null > >>> +++ b/gcc/testsuite/gcc.target/arm/size-optimization-ieee-1.c > >>> @@ -0,0 +1,30 @@ > >>> +/* { dg-do link { target { arm_thumb2_ok } } } */ > >>> +/* { dg-options "-Wl,--gc-sections" } */ > >>> +int > >>> +foo () > >>> +{ > >>> + volatile float a; > >>> + volatile float b; > >>> + volatile float c = a * b; > >>> + return 0; > >>> +} > >>> + > >>> +int > >>> +bar () > >>> +{ > >>> + volatile double a; > >>> + volatile double b; > >>> + volatile double c = a * b; > >>> + return 0; > >>> +} > >>> + > >>> +int > >>> +main () > >>> +{ > >>> + foo (); > >>> + bar (); > >>> + return 0; > >>> +} > >>> +/* { dg-final { scan-symbol-no "__aeabi_fdiv" } } */ > >>> +/* { dg-final { scan-symbol-no "__aeabi_ddiv" } } */ > >>> + > >>> diff --git a/gcc/testsuite/gcc.target/arm/size-optimization-ieee-2.c > >>> b/gcc/testsuite/gcc.target/arm/size-optimization-ieee-2.c > >>> new file mode 100644 > >>> index 0000000..5007d62 > >>> --- /dev/null > >>> +++ b/gcc/testsuite/gcc.target/arm/size-optimization-ieee-2.c > >>> @@ -0,0 +1,30 @@ > >>> +/* { dg-do link { target { arm_thumb2_ok } } } */ > >>> +/* { dg-options "-Wl,--gc-sections" } */ > >>> +int > >>> +foo () > >>> +{ > >>> + volatile float a; > >>> + volatile float b; > >>> + volatile float c = a / b; > >>> + return 0; > >>> +} > >>> + > >>> +int > >>> +bar () > >>> +{ > >>> + volatile double a; > >>> + volatile double b; > >>> + volatile double c = a / b; > >>> + return 0; > >>> +} > >>> + > >>> +int > >>> +main () > >>> +{ > >>> + foo (); > >>> + bar (); > >>> + return 0; > >>> +} > >>> +/* { dg-final { scan-symbol-yes "__aeabi_fmul" } } */ > >>> +/* { dg-final { scan-symbol-yes "__aeabi_dmul" } } */ > >>> + > >>> diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc- > dg.exp > >>> index 3390caa..0d52e95 100644 > >>> --- a/gcc/testsuite/lib/gcc-dg.exp > >>> +++ b/gcc/testsuite/lib/gcc-dg.exp > >>> @@ -880,5 +880,57 @@ proc gdb-exists { args } { > >>> return 0; > >>> } > >>> > >>> +# Scan the OUTPUT_FILE for a symbol. Return 1 if it present, or > >>> +# return 0 if it doesn't present > >>> + > >>> +proc scan-symbol-common { args } { > >>> + global nm > >>> + global base_dir > >>> + > >>> + set testcase [testname-for-summary] > >>> + set output_file "[file rootname [file tail $testcase]].exe" > >>> + > >>> + # Find nm like we find g++ in g++.exp. > >>> + if ![info exists nm] { > >>> + set nm [findfile $base_dir/../../../binutils/nm \ > >>> + $base_dir/../../../binutils/nm \ > >>> + [findfile $base_dir/../../nm $base_dir/../../nm \ > >>> + [findfile $base_dir/nm $base_dir/nm \ > >>> + [transform nm]]]] > >>> + verbose -log "nm is $nm" > >>> + } > >>> + > >>> + if { $output_file == "" } { > >>> + fail "scan-symbol-not $args: dump file does not exist" > >>> + return > >>> + } > >>> + > >>> + set fd [open "| $nm $output_file" r] > >>> + set text [read $fd] > >>> + close $fd > >>> + > >>> + if [regexp -- [lindex $args 0] $text] { > >>> + return 1 > >>> + } else { > >>> + return 0 > >>> + } > >>> +} > >>> + > >>> +proc scan-symbol-yes { args } { > >>> + if { [scan-symbol-common $args] == 1 } { > >>> + pass "scan-symbol-yes $args exists" > >>> + } else { > >>> + fail "scan-symbol-yes $args does not exist" > >>> + } > >>> +} > >>> + > >>> +proc scan-symbol-no { args } { > >>> + if { [scan-symbol-common $args] != 1 } { > >>> + pass "scan-symbol-no $args does not exist" > >>> + } else { > >>> + fail "scan-symbol-no $args exists" > >>> + } > >>> +} > >>> + > >>> set additional_prunes "" > >>> set dg_runtest_extra_prunes "" > >> > >> > >> > > > > > >