compiler: move NonConstGlobals pass to transform package

This commit is contained in:
Ayke van Laethem
2020-03-18 20:41:19 +01:00
committed by Ron Evans
parent b6314fa6ab
commit c5cb2cec9b
6 changed files with 31 additions and 12 deletions
+13
View File
@@ -18,3 +18,16 @@ func ApplyFunctionSections(mod llvm.Module) {
llvmFn = llvm.NextFunction(llvmFn)
}
}
// NonConstGlobals turns all global constants into global variables. This works
// around a limitation on Harvard architectures (e.g. AVR), where constant and
// non-constant pointers point to a different address space. Normal pointer
// behavior is restored by using the data space only, at the cost of RAM for
// constant global variables.
func NonConstGlobals(mod llvm.Module) {
global := mod.FirstGlobal()
for !global.IsNil() {
global.SetGlobalConstant(false)
global = llvm.NextGlobal(global)
}
}