The Linaro Toolchain Working Group is pleased to announce the 2013.04
release of Linaro GCC 4.8, Linaro GCC 4.7 and Linaro GCC 4.6.
Linaro GCC 4.8 2013.04 is the first release in the 4.8 series. Based off the
latest GCC 4.8.0+svn197294 release, it includes performance improvements and
bug fixes.
Interesting changes include:
* Our first 4.8 based release
* Updates to GCC 4.8.0+svn197294
* Initial optimized support for Cortex-A53 for arm*-*-* targets
* Improved support for new ARMv8-A instructions for arm*-*-* and
aarch64*-*-* targets.
* Backport of optimizations concerning whether to use Neon for 64-bit
bitops for arm*-*-* targets.
Linaro GCC 4.7 2013.04 is the thirteenth and last development release in the
4.7 series before entering maintenance. Based off the latest GCC 4.7.2+svn197188
release, it includes ARM-focused performance improvements and bug fixes.
Interesting changes include:
* Updates to GCC 4.7.2+svn197188
* Includes arm/aarch64-4.7-branch up to svn revision 196381
* Backport vectorizer cost model
* Turn off 64-bit Bitops in Neon
Linaro GCC 4.6 2013.04 is the 26th release in the 4.6 series. Based
off the latest GCC 4.6.3+svn197511 release, this is the thirteenth
release after entering maintenance and the last regular one.
Interesting changes include:
* Updates to 4.6.3+svn197511
The source tarballs are available from:
https://launchpad.net/gcc-linaro/+milestone/4.8-2013.04https://launchpad.net/gcc-linaro/+milestone/4.7-2013.04https://launchpad.net/gcc-linaro/+milestone/4.6-2013.04
Downloads are available from the Linaro GCC page on Launchpad:
https://launchpad.net/gcc-linaro
More information on the features and issues are available from the
release pages:
https://launchpad.net/gcc-linaro/4.8/4.8-2013.04https://launchpad.net/gcc-linaro/4.7/4.7-2013.04https://launchpad.net/gcc-linaro/4.6/4.6-2013.04
Mailing list: http://lists.linaro.org/mailman/listinfo/linaro-toolchain
Bugs: https://bugs.launchpad.net/gcc-linaro/
Questions? https://ask.linaro.org/
Interested in commercial support? Inquire at support(a)linaro.org
Hi all,
Currently the binutils job that gets run via cbuild configures with
--enable-gold. I guess this could be useful to ensure the gold build
is not broken, but has the downside of slowing down the build and
causing make check to fail.
I propose we do not enable gold until such a time as we wish to
formally support gold and fix the broken make check.
Does anybody have any objections to doing that?
Thanks,
--
Will Newton
Toolchain Working Group, Linaro
== Progress ==
* Investigated gdb test cases that are failing on
arm-remote gdbserver configuration.
-- Fixed some failures by updating host cross compiler version
-- Fixed some failures by fixing environment issue where not being loaded
properly.
-- All test cases that need to build a shared library and transfer it to
remote target FAIL due to problems which seems like dejaganu limitations.
* Ran GDB test suite on x86_64 remote gdbserver configuration and compared
performance of same configuration on arm.
* Got most documentation ready for Ireland Visa application, still waiting
on invitation letter and hotel booking details.
*** Still No blue-print available to log work in JIRA.
== Plan ==
* Investigate compiler version specific and general failures on arm remote
gdbserver configuration.
* Start on investigation/fixing of arm specific failures in gdb test suite
results.
* Submit Ireland visa application after receiving invitation letter and
hotel booking details.
* Planned Holiday
-- Planned Day off on Friday 12th April 2013 for car checkup in workshop.
== Summary ==
- benchmarking coremark with VRP based extension elimination
* extension elimination in some cases affecting other optimizations
* With this improvements are marginal (details below)
== Plan ==
- study crc where extension elimination is resulting in bad code
- Find a solution
==Details==
If an assignment gimple statement has RHS expression value that can fit
in LHS type, truncation is redundant. Zero/sign extensions are redundant
in this case and rtl statement can be replaced as
from:
(insn 12 11 0 (set (reg:SI 110 [ D.4128 ])
(zero_extend:SI (subreg:HI (reg:SI 117) 0))) c5.c:8 -1
(nil))
to:
(insn 12 11 0 (set (subreg/s/u:HI (reg:SI 110 [ D.4128 ]) 0)
(subreg:HI (reg:SI 117) 0)) c5.c:8 -1
(nil))
With this change, for the following case:
short unPack( unsigned char c )
{
/* Only want lower four bit nibble */
c = c & (unsigned char)0x0F ;
if( c > 7 ) {
/* Negative nibble */
return( ( short )( c - 16 ) ) ;
}
else
{
/* positive nibble */
return( ( short )c ) ;
}
}
asm without elimination
unPack:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
and r0, r0, #15
cmp r0, #7
subhi r0, r0, #16
uxthhi r0, r0
sxth r0, r0
bx lr
.size
asm with elimination
unPack:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
and r0, r0, #15
cmp r0, #7
subhi r0, r0, #16
sxth r0, r0
bx lr
In some cases, changed rtl statement is not eliminated by later passes
and is generated as a mov instruction. Worse, it also seems to affect
the other optimization passes and resulting in worse code for crc. Not
found the cause for it yet.
== Progress ==
* gc sections tests
Completed adding gc-section test cases.
1. TLS and GOT tests.
http://sourceware.org/ml/binutils/2013-03/msg00273.html
2. PLT tests.
http://sourceware.org/ml/binutils/2013-03/msg00273.html
* Evaluate gprof work.
There is one function hook "find_call" which is machine dependent and
is written for i386.c/sparc
Then there are changes in configure.in to add architecture details.
* 1-1 with Matt.
== Plan ==
Continue gprof support work for Aarch64
== Progress ==
* Buildbots
- All ARM build-bots GREEN! Hurray!!! :D
- Improving sort comparison functions makes output reproducible on all
machines
- Fixed fpcmp, which fixes sqlite3 report
- A bad commit broke lots of tests, reverted
- Adding a self-hosting check-all Pandaboard
- In theory, it works, but config is not perfect yet
* Arndale
- Suse image is not stable enough, installed Linaro (325)
- Fathi got GCC bootstrapping with it, should work
- Installed a heat-sink on the board, should reduce problems
- Still got network issues, may be the mac address
- Someone could liaise with Dave Pigott to get a new MAC on the DHCP
* EuroLLVM 2013
- Badges, finishing touches
== Plan ==
* Holidays next week, then
* Check with Galina about Beagle bots
* Finish Panda self-host + test-suite A9 bot
* Gather info and hardware for 3.3 release tests
* Plan for the future!
== Progress ==
* Short week (2 days)
* Tested memcpy on big endian.
* Updated newlib memcpy patch.
* More digging into glibc IFUNC.
== Issues ==
* None.
== Plan ==
* Try and get newlib mempcy patch accepted.
* IFUNC...
--
Will Newton
Toolchain Working Group, Linaro
== Progress ==
* Disable-peeling:
- Still waiting for the results from cbuild. Because of many merges
(pre-release week), there are a lot of jobs in the queue :-(
* Libsanitizer:
- tried to understand why isatty(2) returns true when executing the
testsuite via qemu.
* Neon intrinsics codegen:
- benchmarking in bare-machine shows that GCC is actually ~5% faster
than RVCT on this sample codec.
- to be further discussed internally
* Neon intrinsics testsuite:
- looking at FP16 support.
* Turnoff 64bits ops in Neon:
- backport in 4.8 done by Matt during the release merges.
* Arndale: a few attempts to use it, but it's still unstable.
* Internal support
== Next ==
* Disable-peeling: Analyze bench results when available.
* Revert-coalesce-vars: Analyze bench results when available.
* Libsanitizer: contine isatty(2) study wrt qemu/expect.
* Neon intrinsics: check internally for other codecs
[short week, two days]
Progress:
* qemu maintenance
** arm-devs pull request (and associated code review, etc)
* VIRT-4 [Guest migration support for KVM]
** VIRT-49: implement cp15 sync with kernel
*** some forward motion, but partway through realised some work
I thought had been committed last year hadn't been, so:
** VIRT-73
*** new work item, covering updating the migration state for the
CPU itself to use VMState structures, by updating, testing
and tweaking some patches from Juan Quintela from last year
*** have done the 'update' part; tests and tweaks still todo
-- PMM
Summary:
* Investigate conditional compare.
Details:
1. Expand conditional compare as TRUTH_AND_EXPR/TRUTH_IOR_EXPR for tests.
2. Test tree-level changes for conditional compare.
* Fix/workaround most ICE issues in regression tests.
* Still some fails which expected VRP can optimize the cases.
3. Try to build Coremark and find that conditional compare does block
optimizations, which leads to worse performance.
Plan:
* Investigate VRP and other optimizations to handle conditional compare.
* Raise the propose for upstream discussion.
Planned leaves:
* April 4-8: Chinese Ching Ming Festival and annual leaves.
* April 12: Internal team event.
* April 16-17: Internal training.
Best Regards!
-Zhenqiang
== Progress ==
Started investigating gdb test cases that are failing on
arm-remote gdbserver configuration.
Completed investigation on all timeout gdb test cases failures in
arm-remote gdbserver configuration.
Setup a ubuntu test machine for gdb testing on x86_64 in
remote gdbserver configuration.
Initiated visa process for Ireland and sent requests for required documents
to Arwen.
*** No blue-print available to log work in JIRA.
== Plan ==
Complete investigation of all failure gdb test cases on arm-remote
gdbserver configuration.
Run gdb test suite in x86_64 remote gdbserver configuration and compare
with all other configurations already tested including arm remote to figure
out any similar failures while running test suite remotely on two different
machines.
Book travel to Ireland and complete visa process.
Summary:
* Investigate how to expand conditional compare.
Details:
1. Try to expand conditional compare to RTL
* It seams hard to expand conditional compare to just one cond_exec
insn during expand, since it has to know the cc (GT, LT, etc) set from
previous instruction and tell the later instruction which cc (GT, LT,
etc) it set.
* Try to add new RTL key-word and insn pattern.
2. Follow up Linaro toolchain binaries bug in Yocto build: 1159392,
1161348 and 1161351.
Plan:
* Generate asm for conditional compare.
Planned leaves:
* April 4-8: Chinese Ching Ming Festival and annual leaves.
* April 12: Internal team event.
* April 16-17: Internal training.
Best Regards!
-Zhenqiang
== Progress ==
- Very short work week. I was on leave last Wednesday and Thursday (27th
and 28th).
- Posted patch for gc-section tests for TLS and got related relocs.
- Discussing with Marcus on patch I wrote for gc section tests on PLT
related relocs.
== Plan ==
- Post patch for gc section tests for PLT relocs.
- Complete gc section tests for other generic cases.
- Understand and evaluate gprof support work for Aarch64
== Progress ==
working on http://cards.linaro.org/browse/TCWG-14
- All but 2 test cases are passing and extension elimination for the
simple cases are eliminated
- one of the test failure was due to bug with value range propagation
pass. Have to investigate this further.
- In one instance even though extensions are removed, 1 more instruction
is generated (for crc) - Need to investigate it
- Got the chromebook and Set up Ubuntu; boot strapping gcc now
== Plan ==
- Start with the benchmarking
- investigate the performance and VRP issue
- Also start with http://cards.linaro.org/browse/TCWG-13 in parallel
== Issues ==
* None
== Progress ==
* Libunwind AArch64 support:
- Most of the testsuite is now fine
- but some fixes still needed before upstream submission.
== Plan ==
* Libunwind AArch64 support:
- Fix and submit upstream.
== Progress ==
* Disable-peeling:
- benchmarked locally on snowball. Observed a few regressions in spec2k.
To be analyzed and confirmed with the results from cbuild.
- patched cbuild to work-around a bzr bug which prevented these jobs
from being spawned.
* Libsanitizer: sent patch upstream.
Discussion about interactions with qemu.
* Revert-coalesce: spawned thought-to-be reference jobs for benchmarking.
* Neon intrinsics codegen:
- First analysis of sample codecs seems to indicate that gcc
generates sequences of interdependent instructions where rvct manages
to insert some code in between.
- To be confirmed by dedicated benchmarking, probably in bare-machine mode.
* Neon intrinsics testsuite:
- Added support for polynomial variants (*_p8, *_p16)
- Identified wrong code generated by gcc-linaro-4.7; did not check with trunk.
- Transforming into a dejagnu forms will probably be a lot of work :-(
* Internal activities
== Next ==
* Disable-peeling:
- analyze bench results from cbuild when available
- compare with the results from my snowball
* Libsanitizer:
- resume investigation about isatty problem when ran under qemu.
* Turnoff 64bits ops In Neon:
- backport in linaro-4.8 once the process has been clarified.
* Revert-coalesce:
- check bench results
* Neon intrinsics codegen:
- perform dedicated benchmarking
== Progress ==
* Booked flight for LCE.
* Benchmarked and ran tests on new memcpy implementation.
* Attempted but failed to get new memcpy tested on big endian (still todo).
* Committed new memcpy implementation to cortex strings.
* Passed new memcpy to Android team for bionic.
* Submitted newlib patch for new memcpy.
* Committed binutils ld-elfvsb testsuite fixes, native testsuite now green!
* Further investigation of IFUNC in glibc.
== Issues ==
* Pandaboard ES still a bit flakey, Chromebook hopefully on its way to
replace it.
== Plan ==
* Iron out issues with native binutils make check in cbuild/LAVA.
* Get newlib memcpy patch committed.
* Investigate testing memcpy on big endian (qemu user, models?).
* IFUNC...
--
Will Newton
Toolchain Working Group, Linaro
Progress:
* qemu maintenance
** https://ci.linaro.org/jenkins/job/qemu-ltp/ now shows graphs
of LTP test results for linux-user mode
** rebased qemu-linaro and got it working again (omap3 display
code needed rework after upstream changes)
** investigated why Christoffer Dall's kernels weren't booting:
turns out to be that vexpress now requires CONFIG_REGULATOR
but doesn't force it to be set or set it in the vexpress_defconfig
** rebased/resent/pinged various in-flight patches
* VIRT-4 [Guest migration support for KVM]
** VIRT-49: implement cp15 sync with kernel
*** located my work on this from last year, refreshed my
memory on how far I'd got and what I was planning to do
-- PMM
== Progress ==
* Re-installed the panda buildbot, using USB drive as bot dir
* Reviewing lots of ARM patches (more than usual)
* Trying Arndale again, some errors, some passes, cooler might be
responsible
- Got one internal error, one build error and one pass with Ubuntu kernel
+ patch
- Trying Suse image:
- It has a broken serial driver (makes things much harder)
- sshd does not start by default (in conjunction with serial bug, it's a
killer)
- Now running on a precarious mode, hopefully enough for our needs
* sqlite3 error due to VMUL.f64 while on x86_64 "long double" is f128
- sqlite3 is the best example on what NEVER to do with floating point
values >:|
- Sent patch, working around TILE-Gx issues
== Issues ==
* Still a bit ill, productivity reduced
* Not having a wired network on my desk wastes a LOT of my time
== Plan ==
* Push the sqlite3 patch though
* Continue fixing the 4 remaining broken tests
* Continue with Arndale investigation with Christophe and Zhenqiang
Hi folks,
I'm trying again the bootstrap of GCC on Arndale and it goes pretty well
until it has to install libgcc that it just compiled.
When I build first time, I get an error while installing libgcc:
make[4]: Entering directory
`/home/linaro/devel/gcc/build/objs/armv7l-unknown-linux-gnueabihf/libgcc'
/bin/bash /home/linaro/devel/gcc/src/libgcc/../mkinstalldirs ../.././gcc
(...)
/bin/bash /home/linaro/devel/gcc/src/libgcc/../mkinstalldirs ../.././gcc;
/usr/bin/install -c -m 644 ./libgcc_s.so.1 ../.././gcc/libgcc_s.so.1; rm -f
../.././gcc/libgcc_s.so; /usr/bin/install -c -m 644 ./libgcc_s.so
../.././gcc/libgcc_s.so
Live child 0x01dec548 (install-shared) PID 4405
Reaping losing child 0x01dec548 PID 4405
make[4]: *** [install-shared] Error 1
Though, if I run that command by hand, it works...
I then re-ran make and the first point there is an error is on gmp:
This program built for arm-unknown-linux-gnueabihf
Reading makefiles...
Reading makefile `Makefile'...
Reaping losing child 0x01866320 PID 4784
make[3]: *** [config.h] Error 1
Removing child 0x01866320 PID 4784 from chain.
make[3]: Leaving directory `/home/linaro/devel/gcc/build/objs/gmp'
Need a job token; we have children
Duplicate the job FD
Live child 0x00ae17f8 (all-stage1-libiberty) PID 4755
Live child 0x00be3508 (all-stage1-gmp) PID 4736
Reaping losing child 0x00be3508 PID 4736
make[2]: *** [all-stage1-gmp] Error 2
Removing child 0x00be3508 PID 4736 from chain.
Released token for child 0x00be3508 (all-stage1-gmp).
make[2]: *** Waiting for unfinished jobs....
Live child 0x00ae17f8 (all-stage1-libiberty) PID 4755
I can't notice anything wrong on gmp (all objects are there), other than a
number of symlinks to a missing directory:
gmp-mparam.h -> /home/linaro/devel/gcc/src/gmp/mpn/generic/gmp-mparam.h
the directory "generic" doesn't exist, and lots of files in "mpn" also
point there. Could be a red herring, though.
Any ideas?
cheers,
--renato
PS: this doesn't look like an Arndale specific bug, so we might still be
able to use them for GCC bootstrapping...
Summary:
* Send out shrink-wrap related patches for review.
* Investigate how to add a new tree code.
Details:
1. Fix lp:1157050 and lp:1107659 for Linaro toolchain binaries.
2. Test shrink-wrap dwarf/unwind info and send out the patches for review.
3. Make progress on conditional compare support. With some hard-codes
in gcc, it can gimplify a small case to conditional compare on tree
and no assert until expand.
Plan:
* Investigate how to expand conditional compare GIMPLE to RTL and emit asm.
Planned leaves:
* March 31.
* April 4-8.
Best Regards!
-Zhenqiang
Hi all,
I'd like to run the binutils testsuite in a native configuration
regularly to find any regressions. Do we have any infrastructure for
doing this?
It looks like LAVA would be useful but it looks complex and I am not
sure if we use that already for running toolchain tests (I think there
was a Connect session about that?).
Thanks,
--
Will Newton
Toolchain Working Group, Linaro