== Progress ==
* TCWG-1205 - Minor tweaks to Jenkins LLVM jobs [1/10]
- Sent a few patches to make the Jenkins jobs more friendly and/or
fix them for new changes in the upstream release script
* TCWG-1206 - Investigate timeouts on buildbots [1/10]
- Had some mysterious timeouts on some of the buildbots
- Didn't manage to reproduce, will keep an eye out in case it happens again
* TCWG-1199, 1200 - LLVM 5.0.0 for ARM and AArch64 [1/10]
- RC1 is out, there are some failures in some libunwind and
sanitizer tests; reported upstream
* TCWG-1194 - [ARM GlobalISel] Support simple, static globals [4/10]
- Committed some simple stuff and sent a patch for upstream review
* TCWG-1209 - [MIR] Print ARM constant pools [1/10]
- Printing target-specific constant pools is trivial, but testing is
a bit problematic
- All current MIR tests read in and then print out the same MIR,
which means that we'd have to add support for target-specific constant
pools in the parser as well
- This is complicated by the fact that at a first glance the parser
doesn't seem to handle any other target-specific stuff and I'm not
sure it's ok to pull ARMConstantPool into it
* Misc [2/10]
- Mailing lists, code reviews, meetings
== Plan ==
* Figure out what to do about TCWG-1209
* More code reviews and global isel
# Progress #
* TCWG-1159,New design of GDB/GDBserver target description. [1/10]
Commit one patch of v3. No review comments. Usually it means I don't
review patches, so other people don't review my patches.
* PR 21555. [3/10]
Think it again, and fix it with a better approach. Patches are posted.
* PR 21717. [2/10]
Fix a bug on getting/setting FPSCR on VFPv2. I am surprised that we don't
find it before. Testing patches.
* TCWG-1162, Test GDB+OpenOCD with AArch64 boards. [1/10]
Blocked by OpenOCD bugs. Chat with OpenOCD maintainer to make sure
these bugs are opened in the right place.
* TCWG-561, [3/10]
I finish the patches, but not confident because I use copy-and-swap idiom
for the first time. Need more time to bake it, write unit tests, etc. Maybe,
still need to read "More effective C++" further.
* TCWG-1162, Test GDB+OpenOCD with AArch64 boards.
Blocked by OpenOCD bugs. Chat with OpenOCD maintainer to make sure
these bugs are opened in the right place. Matthew (who contributed OpenOCD
AArch64) pinged me on irc, but he lost connection immediately. Probably, he
contact me for the OpenOCD bugs.
* Think about presenting GDB target description work in Linaro SFO17,
may add some SVE stuff if possible, to make it more attractive.
# Plan #
* TCWG-1159,
* PR 21717, 21555,
* TCWG-561,
* Register the presentation for Linaro SFO17,
--
Yao Qi
== Progress ==
* [ARM GlobalISel] Support globals [6/10]
- This is going to be very hairy because of all the different
relocation models (PIC, ROPI etc), differences between ELF and MachO,
and differences between targets with MOVT or without it
- Started adding support for simple, statically linked globals, it
might take me a while to get all the pseudoinstructions right even for
this simple case
* Misc [4/10]
- Meetings, mailing lists, code reviews, buildbots
== Plan ==
* More GlobalISel
* More code reviews
== Progress ==
* Infrastructure/validation:
- minor fixes in the release jobs
* Benchmarking:
- fixes on reporting scripts
- using more iterations didn't produce more stable results (still noise)
- trying to reboot the boards before running the benchs
* GCC upstream validation:
- further reduced noise ("random" pass/failures)
- sent a patch to fix an aarch64 problem with -mstrict-align
* misc (conf-calls, meetings, emails, ....)
== Next ==
Holidays until August 21st
[TCWG-614] Range Thunks
Finally managed to get some review on the entirety of the Range Thunks
patches. Have reorganised the patches and wrote some documentation to
make it easier to review. Responded to all review comments so far.
Compiler-rt
A long tail of frustration.
Managed to get a hello world semi-hosting test case running on the
latest QEMU running newlib-nano. This was much more difficult than I
expected due to:
- The semihosting startup code of newlib does a semi-hosting call for
top of memory regardless of whether the heap and stack location have
been identified in a linker-script.
- The QEMU semihosting response to top of memory is not helpful
leaving the stack location in an invalid memory location (latest QEMU
requires emulation of a board and not a generic machine)
- QEMU doesn't data-abort when writing to a stack location, so my
return address is helpfully read back as 0x0
Worked around by providing a large enough memory size to QEMU that the
semihosting call for top of memory returns 0, allowing newlib to use
the values in the linker script. Will probably need to spend some time
to write my own startup code that just uses the linker script for the
heap and stack.
Building compiler-rt for v6-m and v7-m has been much more difficult
than I expected as well. I've managed to find a configuration that
works, although it relies on some experimental work in moving
compiler-rt to the runtimes directory.
Plans for next week:
- LLD is top priority
- Get testing for compiler-rt working via qemu on v7-m, the recipe
that works for build does not support testing. I've got to either
extract the cmake magic flags or find a way to plumb through the runes
that make the tests work to the recipe I've got.
- On holiday Thursday, Friday and the following Monday
* Short week (Friday off)
== Progress ==
* Infrastructure/validation:
* Benchmarking:
- production scripts are now up-to-date, still observing noise on
some benchmarks
- fixed a couple of small issues with the scripts
* GCC upstream validation:
- working on further reducing noise ("random" pass/failures)
- reported/fixed a few regressions
- committed testsuite patch with de-require-stack-check
- looking at a problem with unaligned accesses
* misc (conf-calls, meetings, emails, ....)
== This Week ==
* PR78736 (2/10)
- Submitted patch upstream
* type-promotion (3/10)
- Scheduling path-splitting before type-promotion fixes the regression
with path-split-1.c
- Created patch to fix issues with type-promotion interfering with
widening_mul and bswap
optimizations
* malloc-propagation (4/10)
- Updated patch, passes bootstrap+test on x86_64
- Working through ICE's with lto-bootstrap
* Misc (1/10)
- Meetings
== Progress ==
* TCWG-1187 - [ARM GlobalISel] Support G_FCMP for s64 [5/10]
- Committed upstream
- Also refactored the existing code a bit
* TCWG-1190 - [ARM GlobalISel] Support G_BR and G_BRCOND [2/10]
- Committed upstream
* TCWG-1191 - Test zorg patch [1/10]
- Test a patch for running the test-suite with the CMake producer on
the buildbots
* Misc [3/10]
- Meetings, mailing lists, code reviews, buildbots
== Plan ==
* More GlobalISel
* More code reviews
# Progress #
* TCWG-1159,New design of GDB/GDBserver target description. [2/10]
v3 are posted, after fixing some regressions introduced by improper
merge. No comments from upstream yet.
* PR 21555. [2/10]
Has already a fix, but I am not satisfied. Post an RFC for a
discussion in general. My fix is to fix each GDB backend one by one,
while my RFC is about fixing it in GDB core side.
* TCWG-1162, Test GDB+OpenOCD with AArch64 boards. [4/10]
OpenOCD doesn't support semi-hosting, so I pass --specs=nosys.specs to
aarch64-none-elf gcc, but linker can't find a symbol from newlib.
Looks nobody tests aarch64-none-elf gcc with --specs=nosys.specs
before. Hack in newlib here and there, and get compiler/linker happy.
I can download code to HiKey via OpenOCD, but "continue" becomes
"single step". Open two OpenOCD bugs upstream. My work is blocked by
OpenOCD bugs.
* Upstream patches review. [2/10]
** Review sparc64 adi patch v3,
** Investigate and review the patch fixing GDB crashes on amd64-linux,
** Review Alan H.'s patch, and discuss on the design,
** Some conversation with Maciej on MIPS16 and microMIPS disassembler,
because my disassembler rework breaks MIPS.
# Plan #
* PR 21555,
* TCWG-1159
* TCWG-561,
# Issue #
* TCWG-1162 is blocked by OpenOCD bugs.
--
Yao Qi
The Linaro Toolchain Working Group (TCWG) is pleased to announce the 2017.07
snapshot of Linaro GCC 6 and 7 source packages.
o The GCC 7 series introduced an ABI change for ARM targets by fixing a bug
(present since GCC 5, see link below) that affects conformance to the procedure
call standard (AAPCS). The bug affects some C++ code where class objects are
passed by value to functions and could result in incorrect or inconsistent code
being generated. If the option -Wpsabi is enabled (on by default) the compiler
will emit a diagnostic note for code that might be affected by this ABI change.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77728
For an explanation of the changes please see the following website:
https://gcc.gnu.org/gcc-7/changes.html
o Linaro GCC 7 monthly snapshot[1] is based on FSF GCC 7.1+svn250046 and
includes performance improvements and bug fixes backported from mainline GCC.
The contents of this snapshot will be part of the 2017.08 stable[2] quarterly
release.
This snapshot tarball is available on:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/7.1-2017.07/
Interesting changes in this GCC source package snapshot include:
* Updates to GCC 7.1+svn250046
* Backport of [Bugfix] [AArch32] PR target/71778 ICE using
non-constant argument to Neon intrinsic that requires constant
arguments
* Backport of [Bugfix] [AArch64] PR target/71663 aarch64 Vector
initialization can be improved slightly
* Backport of [AArch32] Enable FP16 vector arithmetic operations
* Backport of [AArch32] Fix ARM bootstrap failure due to an odd warning
* Backport of [AArch32] Modify idiv costs for Cortex-A53
* Backport of [AArch64] Add combine pattern for storing lane zero of a vector
* Backport of [AArch64] Add HF vector modes to lane-to-lane INS pattern
* Backport of [AArch64] Add prefetch configuration to aarch64 backend
* Backport of [AArch64] Adjust costs so udiv is preferred over sdiv
when both are valid
* Backport of [AArch64] Allow CMP+SHIFT when comparing with zero
* Backport of [AArch64] Allow const0_rtx operand for atomic
compare-exchange patterns
* Backport of [AArch64] Emit tighter strong atomic compare-exchange
loop when comparing against zero
* Backport of [AArch64] Enable -fprefetch-loop-arrays at given
optimization level
* Backport of [AArch64] Fix -fstack-check with really big frames on aarch64
* Backport of [AArch64] Fix subreg bug in scalar copysign
* Backport of [AArch64] Peephole for SUBS
* Backport of [AArch64] Simplify call, call_value, sibcall,
sibcall_value patterns
* Backport of [AArch64] Update prefetch tuning parameters for qdf24xx.
* Backport of [AArch64] Use SUBS for parallel subtraction and
comparison with immediate
* Backport of [Misc] Add debug counter for loop array prefetching
* Backport of [Misc] Improve debug output of loop data prefetching
* Backport of [Cleanup] [AArch32] Complete legend for ARM register
allocation in arm.h
* Backport of [Cleanup] [AArch32] Fix comment for
cmse_nonsecure_call_clear_caller_saved
* Backport of [Cleanup] [AArch32] Fix typo in comment in arm_expand_prologue
* Backport of [Testsuite] [AArch32] Add MOVT testing for ARMv8-M Baseline
* Backport of [Testsuite] Add dg-require-stack-check
* Backport of [Testsuite] Fix stack-check-1.c
o Linaro GCC 6 monthly snapshot[1] is based on FSF GCC 6.4+svn250045 and
includes performance improvements and bug fixes backported from mainline GCC.
This snapshot contents will be part of the 2017.08 stable[2] quarterly release.
This snapshot tarball is available on:
http://snapshots.linaro.org/components/toolchain/gcc-linaro/6.4-2017.07/
Interesting changes in this GCC source package snapshot include:
* Updates to GCC 6.4+svn250045
* Linaro BZ #3040 -- CC1 and cc1plus cannot convert UTF-8: Regenerate
intl configure
* Backport of [AArch64] Fix -fstack-check with really big frames on aarch64
* Backport of [Testsuite] Add dg-require-stack-check
* Backport of [Testsuite] Fix stack-check-1.c
o Subscribe to the important Linaro mailing lists and join our IRC channels to
stay on top of Linaro development.
** Linaro Toolchain Development "mailing list":
http://lists.linaro.org/mailman/listinfo/linaro-toolchain
** Linaro Toolchain IRC channel on irc.freenode.net at @#linaro-tcwg@
* Bug reports should be filed in bugzilla against GCC product:
http://bugs.linaro.org/enter_bug.cgi?product=GCC
* Interested in commercial support? inquire at "Linaro support":
mailto:support@linaro.org
[1]. Source package snapshots are defined when the compiler is only
put through unit-testing and full validation is not performed.
[2]. Stable source package releases are defined as releases where the
full Linaro Toolchain validation plan is executed.