mirror of
https://github.com/golang/go
synced 2024-11-11 23:40:22 -07:00
cmd/compile: do not export float or complex constants with -asmhdr
The -asmhdr flag is used to generate header files for assembly code such that that code has access to compile-time constants. During the build these constants end up in the (ephemeral) file go_asm.h. For historical reasons, floating-point and complex constants are printed with a 'p' exponent but with decimal mantissa; also, because of the compiler-internal precision of 512 bits, the mantissae are quite large (and conversions are comparatively slow). With the changes to the new Go 2 number literals, the respective upcoming changes to text/scanner (which in turn is used by the assembler) will make text/scanner newly accept hexadecimal floats; but also decimal floats using the incorrect 'p' exponent and report an error in that case. As a consequence, the assembler will report an error when trying to parse the before-mentioned decimal floating-point values which are using 'p' exponents. Since these constants are never needed in the assembly code, do not emit them in the first place. Change-Id: I06c7c96b04e8d062441120107992472f87a651b2 Reviewed-on: https://go-review.googlesource.com/c/161904 Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
85c1798ac6
commit
33ac854481
@ -209,6 +209,10 @@ func dumpasmhdr() {
|
||||
}
|
||||
switch n.Op {
|
||||
case OLITERAL:
|
||||
t := n.Val().Ctype()
|
||||
if t == CTFLT || t == CTCPLX {
|
||||
break
|
||||
}
|
||||
fmt.Fprintf(b, "#define const_%s %#v\n", n.Sym.Name, n.Val())
|
||||
|
||||
case OTYPE:
|
||||
|
Loading…
Reference in New Issue
Block a user