aboutsummaryrefslogtreecommitdiffhomepage
path: root/builder/cc.go
diff options
context:
space:
mode:
authorAyke van Laethem <[email protected]>2021-04-14 02:23:01 +0200
committerRon Evans <[email protected]>2021-04-14 09:17:54 +0200
commit96b1b76483a99647cc12b1c0f1d15c95f1d54025 (patch)
tree2ec04409d460e7dc21ca2cfbf3775104a8010035 /builder/cc.go
parentf234df7a50e6377adc3cf0133e847f48e9f2aaa2 (diff)
downloadtinygo-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.go7
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, " "))
}