Committed my core-shifts patch into Linaro GCC.
Checked and posted my (newly rebased) neon-shifts patch upstream for review.
Continued work on my brain-dump of work in progress. Cleaned up, tested
and posted example testcases and before/after compiler output for all my
work-in-progress patches.
Looked at LaunchPad bug #851258. It's a miss-optimization bug that would
take some effort to fix.
Discovered that my lower-subreg build had failed due to Werror. Fixed
the warning, reuploaded the sources, and relaunched the build.
Prepared for travel to Connect.
== GCC ==
* Followed up on review comments on reassociation pass.
* Analyzed performance headroom of Linaro GCC 4.7 compared
to various other compilers and identified several missing
optimisations.
== Misc ==
* Prepared for Linaro Connect Hong Kong.
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand | Phone: +49-7031/16-3727
STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk
Wittkopp
Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294
Current Milestones:
|| || Planned || Estimate || Actual ||
||cp15-rework || 2012-01-06 || 2012-06-23 || ||
== other ==
* preparation for Connect
* wrote up and sent out proposal about handling TrustZone for KVM
* investigated some issues Riku found when testing his packaged
version of KVM (one model issue, one kernel-too-old issue)
* usual upstream maintainer duties
-- PMM
Hi,
OpenEmbedded-Core/meta-linaro:
* cbuild enhancements:
* debugged failures till I noticed cbuild was pulling in the wrong
branch of meta-linaro (now fixed)
* added support for checking the oe-core build prerequisites
* the images are now automatically bootet using qemu
* sizes of the images and package sizes are now recorded
* update to Linaro GCC 4.6 2012.05 (denzil) and Linaro GCC 4.7 2012.05
(master)
* debugged build failure when using Linaro GCC 4.6 in a hard float
configuration
* turns out that OE expects the GCC to respect the
ARCH_FLAGS_FOR_TARGET env variable
to build libgcc and friends properly for the given target
(another missing patch to build the GCC the OE-Core way)
* fix tested and checked in (denzil)
* created/updated wiki pages:
https://wiki.linaro.org/WorkingGroups/ToolChain/Outputs/OpenEmbedded-Corehttps://wiki.linaro.org/KenWerner/Sandbox/OpenEmbedded-Core
Regards,
Ken
Hi,
GDB for Android:
* Fixed the PC offset in jmp_buf but the patch still wasn't working.
It turns out that GDB wasn't loading the libc6.so symbols even though
I set both sysroot *and* solib-search-path. Copied libc6.so to GDB's
cwd and the patch worked (will investigate this next week).
Submitted upstream, currently under review.
--
[]'s
Thiago Jung Bauermann
Linaro Toolchain Working Group
Hi,
GDB for Android:
* Worked on patch which uses the correct offset for finding the PC value
inside the jmp_buf on Android binaries. Things weren't working though,
and in the end it turns out that the value used in AOSP's patch is
wrong.
--
[]'s
Thiago Jung Bauermann
Linaro Toolchain Working Group
Hi Zhenqiang. I've had a look at the difference between testsuite
results on our current softfp Natty builders and the new hard float
Precise builders. The diff and notes is at:
http://people.linaro.org/~michaelh/incoming/hard-float-builder-diff.txt
There's a lot of commonality:
/usr/bin/ld: cannot find {S,g}crt1.o: builder fault. I've fixed this.
sorry, unimplemented: Thumb-1 hard-float VFP ABI errors: tests where
they set the architecture to ARMv5T and use our default Thumb mode.
This causes the compiler to fail as it doesn't support Thumb-1 with
hard float.
arm_iwmmxt_ok5222.c:1:0: sorry, unimplemented: iWMMXt and hardware
floating point
Some are real:
+FAIL: gcc.c-torture/compile/sync-3.c -O0 (test for excess errors)
/tmp/cc3ufndj.s:436: Error: co-processor offset out of range
+FAIL: gcc.dg/pr48335-2.c (test for excess errors)
pr48335-2.c:19:30: internal compiler error: in
expand_expr_addr_expr_1, at expr.c:7527
+FAIL: gcc.dg/pr48335-5.c (test for excess errors)
pr48335-5.c:17:1: error: unrecognizable insn:
(insn 11 10 12 3 (set (reg:DI 141)
(unspec:DI [
(mem/c:DI (plus:SI (reg/f:SI 129 virtual-stack-vars)
(const_int -8 [0xfffffffffffffff8])) [2 S8 A32])
] UNSPEC_MISALIGNED_ACCESS))
/cbuild/slaves/ursa2/gcc-linaro-4.7+bzr114988~zhenqiang-chen~gnueabihf/gcc/gcc-linaro-4.7/gcc/testsuite/gcc.dg/pr48335-5.c:16
-1
(nil))
+FAIL: gcc.dg/torture/stackalign/builtin-apply-2.c -O0 execution test
Some are marked as unsupported but shouldn't be:
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11a.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11b.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11c.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-25.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-26.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-28.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-2.c
+UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-32.c
Could you look into the unsupported ones please? I'll fix the crt1
problems and respin the build.
-- Michael
The Precise based hard float auto builders are now online. Every
merge request and commit to gcc-linaro will now be built build both on
a Natty softfp system and a Precise hard float. Let's run this in
parallel for a while before updating the validation lab.
I've also updated the x86 cloud builders from Natty to Precise. A
quick test showed no regressions but I want to run them in parallel
for a bit to be sure.
-- Michael
Progress
* Proposed backport for vfp addressing modes patch.
* Investigated the build issue with EEMBC and have a candidate patch
for upstream trunk. (PR53334)
* Investigated auto-inc-dec sched changes.
* Some upstream patch review.
Plans
* Work on auto-inc-dec sched changes.
* Finish PR53334 patch upstream.
* Work through some of the speed tickets and upstream bugzilla perf
tickets in preparation for connect.
Remerged the GCC 4.7 branch from upstream. I had previously
misunderstood how to resolve a conflict where Uli had committed a
different version of the same patch upstream.
Spun the GCC 4.6 and 4.7 release tarballs and passed them to Michael for
testing.
Continued work on improving code generation for 64-bit and/or/not/xor. I
now have this working to the point where it would be ready to post
upstream .... except that it depends on my other patches that are not
yet committed (or even reviewed) upstream.
Rebased and modified my core-shifts patch following Ramana's code
review. Then regression tested it - no regressions - and committed the
patch upstream. I've also updated the launchpad branch and resubmitted
the merge request with the finalized upstream patch.
Rebased the neon-shifts patch. I'll repost this upstream as soon as I'm
happy it still works correctly.
Worked on a brain-dump of all I have been working on recently. This will
hopefully help others take over my tasks after the contract expires. I
still need to put together all the test-cases and examples that Ramana
requested.
Summary:
* Linaro binary toolchain 2012.05 release.
* Code size benchmark analysis.
Details:
1. Linaro binary toolchain 2012.05 release
* Check-in the patches to support multilib and arm-linux-gnueabihf
in linaro crosstool.
* Update config to 2012.05 release, which will build multilib toolchain:
default option: -mthumb -march=armv7-a -mfloat-api=hard
-mtune=cortex-a9 -mfpu=vfpv3-d16
armv4t option: -marm -march=armv4t -mfloat-api=soft
* Try u-boot build with the armv4t option.
* Add arm-linux-gnueabihf.mpi for windows installer.
* Tests and regression analysis.
2. During code size regression analysis, we find postreload can not
optimize some cases when spilling happens, reassociation for PHI note
might lead to spilling, expand generates inefficient codes which can
not be optimized by later passes and poor code layout introduces more
branch instructions.
Plans:
* Linaro binary toolchain 2012.05 release.
* Investigate other code size regressions in 4.7.
Best regards!
-Zhenqiang
== GCC ==
* Completed implementation of new optimization sub-pass to improve
re-association of plus/minus chains for types with undefined
overflow (to improve end-of-loop value computation);
posted to gcc-patches for review.
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand | Phone: +49-7031/16-3727
STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk
Wittkopp
Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294
Current Milestones:
|| || Planned || Estimate || Actual ||
||cp15-rework || 2012-01-06 || 2012-06-23 || ||
Historical Milestones:
||initial-a15-system-model || 2012-01-27 || 2012-01-27 || 2012-01-17 ||
||qemu-kvm-getting-started || 2012-03-04?|| 2012-03-04 || 2012-02-01 ||
== cp15-rework ==
* fixed various issues, sent out v2 series, looks good to me
== other ==
* qemu-linaro 2012.05 released
* thinking about how to handle TrustZone in the context of QEMU/KVM
(we're not going to try to do a full emulation, but we need to
define a coherent line for how we support running guests that
are expecting to run as either S or NS PL1/0 kernels)
* had a play with booting UEFI on QEMU -- fails early on trying
to use the TrustZone-only VBAR register
* usual upstream maintainer duties
-- PMM
On 17 May 2012 18:23, Zhenqiang Chen <zhenqiang.chen(a)linaro.org> wrote:
>> Some are marked as unsupported but shouldn't be:
>>
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11a.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11b.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-11c.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-25.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-26.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-28.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-2.c
>> +UNSUPPORTED: gcc.dg/tree-ssa/gen-vect-32.c
>
> The root cause is "target vect_cmdline_needed". For those cases, they
> have notes as:
>
> /* { dg-do run { target vect_cmdline_needed } } */
>
> In function "check_effective_target_vect_cmdline_needed" of
> lib/target-supports.exp, it check_effective_target_arm_neon.
>
> For our build, it is arm neon,
> check_effective_target_vect_cmdline_needed return 0.
>
> A quick fix is to add another dg-do run like:
> /* { dg-do run { target arm*-*-*eabihf } } */
I've looked into this further and the tests make no sense. The test
themselves are turned off unless the compiler needs extra command line
arguments to enable some type of SIMD. See PR21292. Let's discuss
this on Monday.
I've put an updated list at:
http://people.linaro.org/~michaelh/incoming/hard-float-builder-diff-2.txt
The interesting ones below. They're a mix of assembler faults, ICEs,
and testisims. None are due to the change in triplet so please
propose your patch upstream.
-- Michael
+FAIL: gcc.c-torture/compile/sync-1.c -O0 (test for excess errors)
+FAIL: gcc.c-torture/compile/sync-3.c -O0 (test for excess errors)
/tmp/ccGuCO1R.s:463: Error: co-processor offset out of range
** Doesn't happen with a natty sysroot. Assembler fault?
+FAIL: gcc.dg/builtin-apply2.c execution test
** Testism. Skips if an explicit float-abi=hard is passed.
+FAIL: gcc.dg/pr48335-5.c (test for excess errors)
(insn 11 10 12 3 (set (reg:DI 141)
(unspec:DI [
(mem/c:DI (plus:SI (reg/f:SI 129 virtual-stack-vars)
(const_int -8 [0xfffffffffffffff8])) [2 S8 A32])
] UNSPEC_MISALIGNED_ACCESS))
/cbuild/slaves/ursa2/gcc-linaro-4.7+bzr114985~michaelh1~hard-builder-test/gcc/gcc-linaro-4.7/gcc/testsuite/gcc.dg/pr48335-5.c:16
-1
(nil))
** The unaligned access support doesn't include an unaligned DI pattern?
+FAIL: gcc.dg/torture/stackalign/builtin-apply-2.c -Os execution test
** Testism. Assumes doubles are passed in core registers.
+UNSUPPORTED: gcc.target/arm/mmx-1.c
/cbuild/slaves/ursa2/gcc-linaro-4.7+bzr114985~michaelh1~hard-builder-test/gcc/gcc-linaro-4.7/gcc/testsuite/gcc.target/arm/g2.c:12:1:
sorry, unimplemented: Thumb-1 hard-float VFP ABI
** Various forms. Needs thought.
The Linaro Toolchain Working Group is pleased to announce the release of
Linaro QEMU 2012.05.
Linaro QEMU 2012.05 is the latest monthly release of qemu-linaro. Based
off upstream (trunk) QEMU, it includes a number of ARM-focused bug fixes
and enhancements.
New in this month's release:
- Beagle bootrom emulation now correctly handles FAT12/FAT16
images (thanks to Peter Chubb for the bug report and patch).
- We now support running ARM BE8 userspace binaries (ie
byte-invariant big-endian data and little-endian code).
Known issues:
- Graphics do not work for OMAP3 based models (beagle, overo)
with 11.10 Linaro images.
- Audio may not work on Versatile Express models with the latest
Linaro kernel/hardware packs (LP:977610).
The source tarball is available at:
https://launchpad.net/qemu-linaro/+milestone/2012.05
More information on Linaro QEMU is available at:
https://launchpad.net/qemu-linaro
There will be no release of Linaro GDB this month. We're busy working
on upstreaming Android support and will backport them as they come
ready.
-- Michael
The Linaro Toolchain Working Group is pleased to announce the 2012.05
release of both Linaro GCC 4.7 and Linaro GCC 4.6.
Linaro GCC 4.7 2012.05 is the second release in the 4.7 series. Based
off the latest GCC 4.7.0+svn187448 release, it includes performance
improvements especially around 64 bit operations.
Interesting changes include:
* Updates to GCC 4.7.0+svn187448
* Uses the new /lib/ld-linux-armhf.so.3 loader for hard float binaries
* Adds support for negating 64 bit values in NEON
* Improves loading of 64 bit immediate values in NEON
Fixes:
* LP: #959242 ICE: in vect_is_simple_use_1, at tree-vect-stmts.c
* LP: #968766 GCC 4.6.3 (cc1) crashes when compiling MPFR 3.1.0
Linaro GCC 4.6 2012.05 is the fifteenth release in the 4.6 series.
Based off the latest GCC 4.6.3+svn187273 release, this is the second
release after entering maintenance.
Interesting changes include:
* Updates to 4.6.3+svn187273
Fixes:
* LP: #959242 ICE: in vect_is_simple_use_1, at tree-vect-stmts.c
* LP: #968766 GCC 4.6.3 (cc1) crashes when compiling MPFR 3.1.0
* LP: #972648 ICE (segfault) in gsi_for_stmt
The source tarballs are available from:
https://launchpad.net/gcc-linaro/+milestone/4.7-2012.05https://launchpad.net/gcc-linaro/+milestone/4.6-2012.05
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 page:
https://launchpad.net/gcc-linaro/4.7/4.7-2012.05
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
-- Michael
Hi,
OpenEmbedded-Core/meta-linaro:
* reverted the gcc 4.7 support from the denzil branch as it's causing
too much trouble
* instead we'll use a oe-core master snaphsot for 4.7
* committed a fix to our kernel bbappend
* started to look into cbuild
* added configurations to support building the images for all
oe-core targets
* created lp:~kwerner/cbuild/oecore
* kicked off a build for ARM, MIPS, PPC, X86, X86_64 using Linaro
GCC 4.6 2012.04
Misc:
* IBM internal meetings
* public holiday on Thu, vacation on Fri
I'll be back on monday
Regards,
Ken
Hi Ramana. FYI, gcc trunk fails to bootstrap with:
../../../../gcc-4.8~/libgcc/libgcc2.c: In function '__mulvdi3':
../../../../gcc-4.8~/libgcc/libgcc2.c:397:1: internal compiler error:
in df_uses_record, at df-scan.c:3179
A cross compiler fails when building EEMBC with:
(insn 1166 1165 1167 155 (set (reg:CC 24 cc)
(compare:CC (reg:SI 2148 [ D.6766 ])
(const_int 5000 [0x1388]))) iirflt01/bmark.c:501 -1
(nil))
iirflt01/bmark.c:1138:1: internal compiler error: in extract_insn, at
recog.c:2131
The last revision that bootstrapped was 187203. 187223 and 187275 failed.
-- Michael
The GCC 4.7 merge testing is currently in progress. We're a little late
with it, so I'm spinning the release speculatively. This being the case
I've made the lp:gcc-linaro branch read-only, just in case.
This shouldn't prevent anybody from reading the branch with
"lp:gcc-linaro", but the "lp:~linaro-toolchain-dev/gcc-linaro/4.7" name
will be broken for a while, so you may find "bzr pull" broken. (The
reason being that the only way to make a bzr branch read-only is to
change its owner.)
I will put the branch back to its normal state as soon as the release is
done.
Andrew
Hi there. We'd like to run a Fast Model in the validation lab for KVM
testing. Is there a blueprint for this? What's the status?
Paul and I discussed a rough plan a few months ago. It was along the lines of:
* A x86 machine as the Fast Model host
* An emulated vexpress-a15 as the KVM host
* A vexpress-a15 as the KVM guest
* LAVA treats the Fast Model as a board
* Jobs are spawned into the LAVA scheduler
* Once the KVM host is running, everything else is toolchain specific
and done via shell scripts
The dispatcher would:
* Grab the hwpack
* Grab the nano rootfs
* Build the rootfs with separate kernel, initrd, and dtb using
linaro-media-create
* Start the Fast Model with the boot wrapper, kernel, and rootfs
* Use the console to run the test script
There's more information on the steps required at:
https://wiki.linaro.org/MichaelHope/Sandbox/KVMUseCase
-- Michael
== GCC ==
* Checked in patch to fix LP #959242 (GCC PR tree-optimization/52633)
to Linaro GCC 4.7 and 4.6.
* Completed design of new optimization sub-pass to improve
re-association of plus/minus chains for types with undefined
overflow (to improve end-of-loop value computation);
started implementation.
* Investigated GCC PR target/44141.
* Started investigation of TSVC vectorizer test kernels.
Mit freundlichen Gruessen / Best Regards
Ulrich Weigand
--
Dr. Ulrich Weigand | Phone: +49-7031/16-3727
STSM, GNU compiler and toolchain for Linux on System z and Cell/B.E.
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter | Geschäftsführung: Dirk
Wittkopp
Sitz der Gesellschaft: Böblingen | Registergericht: Amtsgericht
Stuttgart, HRB 243294