avr: use compiler-rt

This change adds support for compiler-rt, which supports float64 (unlike
libgcc for AVR). This gets a number of tests to pass that require
float64 support.

We're still using libgcc with this change, but libgcc will probably be
removed eventually once AVR support in compiler-rt is a bit more mature.

I've also pushed a fix for a small regression in our
xtensa_release_14.0.0-patched LLVM branch that has also been merged
upstream. Without it, a floating point comparison against zero always
returns true which is certainly a bug. It is necessary to correctly
print floating point values.
This commit is contained in:
Ayke van Laethem
2021-02-12 01:34:22 +01:00
committed by Ron Evans
parent a94e03eff2
commit 109b5298c4
7 changed files with 26 additions and 23 deletions
+2 -15
View File
@@ -182,11 +182,6 @@ func runPlatTests(options compileopts.Options, tests []string, t *testing.T) {
// Not all tests are currently supported on AVR.
// Skip the ones that aren't.
switch name {
case "atomic.go":
// Requires GCC 11.2.0 or above for interface comparison.
// https://github.com/gcc-mirror/gcc/commit/f30dd607669212de135dec1f1d8a93b8954c327c
continue
case "reflect.go":
// Reflect tests do not work due to type code issues.
continue
@@ -203,20 +198,12 @@ func runPlatTests(options compileopts.Options, tests []string, t *testing.T) {
// Reflect size calculation crashes.
continue
case "binop.go":
// Interface comparison results are inverted.
continue
case "channel.go":
// Freezes after recv from closed channel.
continue
case "float.go", "math.go", "print.go":
// Stuck in runtime.printfloat64.
continue
case "interface.go":
// Several comparison tests fail.
case "math.go":
// Stuck somewhere, not sure what's happening.
continue
case "cgo/":