From c8523c488ef3d8ff47a73dcc51f3c3a86c034f6a Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Sun, 9 Feb 2020 12:44:36 +0100 Subject: [PATCH] Now using VariableBuilderConfig for setting up SSA/MA & MemoryArea. --- .../dk/camelot64/kickc/model/VariableBuilder.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/dk/camelot64/kickc/model/VariableBuilder.java b/src/main/java/dk/camelot64/kickc/model/VariableBuilder.java index 07e0ef5f4..3558e17ee 100644 --- a/src/main/java/dk/camelot64/kickc/model/VariableBuilder.java +++ b/src/main/java/dk/camelot64/kickc/model/VariableBuilder.java @@ -295,12 +295,15 @@ public class VariableBuilder { return (addressDirective.address < 0x100) ? Variable.MemoryArea.ZEROPAGE_MEMORY : Variable.MemoryArea.MAIN_MEMORY; else if(!isConstant() && isOptimize()) return Variable.MemoryArea.ZEROPAGE_MEMORY; - else if(isArray()) - return Variable.MemoryArea.MAIN_MEMORY; - else if(isTypeStruct() && isScopeGlobal()) - return Variable.MemoryArea.MAIN_MEMORY; - else - return Variable.MemoryArea.ZEROPAGE_MEMORY; + else { + VariableBuilderConfig.Scope scope = VariableBuilderConfig.getScope(isScopeGlobal(), isScopeLocal(), isScopeParameter(), isScopeMember()); + VariableBuilderConfig.Type type = VariableBuilderConfig.getType(isTypeInteger(), isArray(), isTypePointer(), isTypeStruct()); + VariableBuilderConfig.Setting setting = config.getSetting(scope, type); + if(setting!=null && VariableBuilderConfig.MemoryArea.MEM.equals(setting.memoryArea)) + return Variable.MemoryArea.MAIN_MEMORY; + else + return Variable.MemoryArea.ZEROPAGE_MEMORY; + } } /**