diff options
author | Ayke van Laethem <[email protected]> | 2021-04-14 02:23:01 +0200 |
---|---|---|
committer | Ron Evans <[email protected]> | 2021-04-14 09:17:54 +0200 |
commit | 96b1b76483a99647cc12b1c0f1d15c95f1d54025 (patch) | |
tree | 2ec04409d460e7dc21ca2cfbf3775104a8010035 /builder/cc.go | |
parent | f234df7a50e6377adc3cf0133e847f48e9f2aaa2 (diff) | |
download | tinygo-96b1b76483a99647cc12b1c0f1d15c95f1d54025.tar.gz tinygo-96b1b76483a99647cc12b1c0f1d15c95f1d54025.zip |
all: use -Qunused-arguments only for assembly files
The -Qunused-arguments flag disables the warning where some flags are
not relevant to a compilation. This commonly happens when compiling
assembly files (.s or .S files) because some flags are specific to C and
not relevant to assembly.
Because practically all baremetal targets need some form of assembly,
this flag is added to most CFlags. This creates a lot of noise. And it
is also added for compiling C code where it might hide bugs (by hiding
the fact a flag is actually unused).
This commit adds the flag to all assembly compilations and removes them
from all target JSON files.
Diffstat (limited to 'builder/cc.go')
-rw-r--r-- | builder/cc.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/builder/cc.go b/builder/cc.go index 0261fdb4c..f9bdbaf19 100644 --- a/builder/cc.go +++ b/builder/cc.go @@ -124,6 +124,13 @@ func compileAndCacheCFile(abspath, tmpdir string, cflags []string, config *compi flags := append([]string{}, cflags...) // copy cflags flags = append(flags, "-MD", "-MV", "-MTdeps", "-MF", depTmpFile.Name()) // autogenerate dependencies flags = append(flags, "-c", "-o", objTmpFile.Name(), abspath) + if strings.ToLower(filepath.Ext(abspath)) == ".s" { + // If this is an assembly file (.s or .S, lowercase or uppercase), then + // we'll need to add -Qunused-arguments because many parameters are + // relevant to C, not assembly. And with -Werror, having meaningless + // flags (for the assembler) is a compiler error. + flags = append(flags, "-Qunused-arguments") + } if config.Options.PrintCommands { fmt.Printf("%s %s\n", config.Target.Compiler, strings.Join(flags, " ")) } |