diff --git a/build/build.sh b/build/build.sh index a833fc78272cb0f5a936fc3f114013363b7aac8d..1322c2d1b8759904b0d2e56ac73b1a2dea8746f8 100644 --- a/build/build.sh +++ b/build/build.sh @@ -15,6 +15,7 @@ # set -e source build/envsetup.sh +make clean option=$@ if [ "$option" = "DEBUG" ]; then make BUILD_TYPE=DEBUG diff --git a/build/core/maple_variables.mk b/build/core/maple_variables.mk index a2b6edc72c6d5d5ff7b575b7e9ec5b7b09631e8e..ee8aad33aaab12a37a1d0aab76773cb0e6d0f0b9 100644 --- a/build/core/maple_variables.mk +++ b/build/core/maple_variables.mk @@ -1,3 +1,4 @@ +OPT := O2 TARGETS := $(APP) LIB_CORE_PATH := $(MAPLE_ROOT)/libjava-core LIB_CORE_JAR := $(LIB_CORE_PATH)/java-core.jar diff --git a/build/core/mplcomb.mk b/build/core/mplcomb.mk index 4e740119350a45b77e96f86b51c3bd25147d6c19..37b7aa2b9eb59b98fc7f4e256d426ab93de43761 100644 --- a/build/core/mplcomb.mk +++ b/build/core/mplcomb.mk @@ -1,2 +1,2 @@ $(APP_S): %.VtableImpl.s : %.jar $(MAPLE_BIN) $(JBC2MPL_BIN) $(MPLCG_BIN) $(LIB_CORE_MPLT) - $(MAPLE_BIN) -O0 --mplt $(LIB_CORE_MPLT) $< + $(MAPLE_BIN) -$(OPT) --mplt $(LIB_CORE_MPLT) $< diff --git a/src/bin/maple b/src/bin/maple index 5aab2e9d7002113e58fd002adbe59d1e30371892..22bb015508943636089b8cdb800aae03ba936e46 100755 Binary files a/src/bin/maple and b/src/bin/maple differ diff --git a/src/maple_driver/defs/default/O2_options_me.def b/src/maple_driver/defs/default/O2_options_me.def new file mode 100644 index 0000000000000000000000000000000000000000..623af4569b8d286aec172d26e5a0c64554fb8d4f --- /dev/null +++ b/src/maple_driver/defs/default/O2_options_me.def @@ -0,0 +1,17 @@ +/* + * Copyright (c) [2019-2020] Huawei Technologies Co.,Ltd.All rights reserved. + * + * OpenArkCompiler is licensed under the Mulan PSL v1. + * You can use this software according to the terms and conditions of the Mulan PSL v1. + * You may obtain a copy of Mulan PSL v1 at: + * + * http://license.coscl.org.cn/MulanPSL + * + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR + * FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v1 for more details. + */ +// option name, option value, option connect sysmbol, can append?, append spilter. +{ "-O2", "", "", false, "", false }, +{ "--quiet", "", "", false, "", false }, diff --git a/src/maple_driver/defs/default/O2_options_mpl2mpl.def b/src/maple_driver/defs/default/O2_options_mpl2mpl.def new file mode 100644 index 0000000000000000000000000000000000000000..fa58e815c96ac9368f01146950b9189d289c77bb --- /dev/null +++ b/src/maple_driver/defs/default/O2_options_mpl2mpl.def @@ -0,0 +1,20 @@ +/* + * Copyright (c) [2019-2020] Huawei Technologies Co.,Ltd.All rights reserved. + * + * OpenArkCompiler is licensed under the Mulan PSL v1. + * You can use this software according to the terms and conditions of the Mulan PSL v1. + * You may obtain a copy of Mulan PSL v1 at: + * + * http://license.coscl.org.cn/MulanPSL + * + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR + * FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v1 for more details. + */ +// option name, option value, option connect sysmbol, can append?, append spilter. +{ "-O2", "", "", false, "", false }, +{ "--quiet", "", "", false, "", false }, +{ "--regnativefunc", "", "", false, "", false }, +{ "--no-nativeopt", "", "", false, "", false }, +{ "--emitVtableImpl", "", "", false, "", false }, diff --git a/src/maple_driver/defs/default/O2_options_mplcg.def b/src/maple_driver/defs/default/O2_options_mplcg.def new file mode 100644 index 0000000000000000000000000000000000000000..4f82acc0f99be8aa77d7f6a9b4d80a0b87a7f004 --- /dev/null +++ b/src/maple_driver/defs/default/O2_options_mplcg.def @@ -0,0 +1,21 @@ +/* + * Copyright (c) [2019-2020] Huawei Technologies Co.,Ltd.All rights reserved. + * + * OpenArkCompiler is licensed under the Mulan PSL v1. + * You can use this software according to the terms and conditions of the Mulan PSL v1. + * You may obtain a copy of Mulan PSL v1 at: + * + * http://license.coscl.org.cn/MulanPSL + * + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR + * FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v1 for more details. + */ +// option name, option value, option connect sysmbol, can append?, append spilter. +{ "-O2", "", "", false, "", false }, +{ "--quiet", "", "", false, "", false }, +{ "--no-pie", "", "", false, "", false }, +{ "--verbose-asm", "", "", false, "", false }, +{ "--fpic", "", "", false, "", false }, + diff --git a/src/maple_driver/defs/default_options.def b/src/maple_driver/defs/default_options.def index 8062502304ce2064742aee2b0b23216edc676efd..ca4fa79ff66a381c3bda07a0f90558765805534b 100644 --- a/src/maple_driver/defs/default_options.def +++ b/src/maple_driver/defs/default_options.def @@ -1,5 +1,5 @@ /* - * Copyright (c) [2019] Huawei Technologies Co.,Ltd.All rights reserved. + * Copyright (c) [2019-2020] Huawei Technologies Co.,Ltd.All rights reserved. * * OpenArkCompiler is licensed under the Mulan PSL v1. * You can use this software according to the terms and conditions of the Mulan PSL v1. @@ -28,5 +28,17 @@ static MplOption kMpl2MplDefaultOptionsO0[] = { static MplOption kMplcgDefaultOptionsO0[] = { #include "default/O0_options_mplcg.def" }; +// O2 ME options +static MplOption kMeDefaultOptionsO2[] = { +#include "default/O2_options_me.def" +}; +// O2 mpl2mpl options +static MplOption kMpl2MplDefaultOptionsO2[] = { +#include "default/O2_options_mpl2mpl.def" +}; +// O2 mplcg options +static MplOption kMplcgDefaultOptionsO2[] = { +#include "default/O2_options_mplcg.def" +}; } // namespace maple #endif // MAPLE_DRIVER_INCLUDE_DEFAULT_OPTIONS_H diff --git a/src/maple_driver/include/usages.h b/src/maple_driver/include/usages.h index df4d4da61389c6f0a4fcbbd224e5317197de353e..9ff0b7235e794502afebf3dcff2f2807ba16f37d 100644 --- a/src/maple_driver/include/usages.h +++ b/src/maple_driver/include/usages.h @@ -23,6 +23,7 @@ enum OptionIndex : uint64 { kInFile, kInMplt, kOptimization0, + kOptimization2, kMeOpt, kMpl2MplOpt, kSaveTemps, diff --git a/src/maple_driver/src/mpl_options.cpp b/src/maple_driver/src/mpl_options.cpp index 9af0224307b153a13a3a823fe3d9b869005f242e..5a8ea6ce08e264c7d693950e75cf095e02d8cefb 100644 --- a/src/maple_driver/src/mpl_options.cpp +++ b/src/maple_driver/src/mpl_options.cpp @@ -104,6 +104,18 @@ const mapleOption::Descriptor usages[] = { " -O0 \tNo optimization.\n", "all", { { nullptr, nullptr, nullptr, nullptr } } }, + { kOptimization2, + 0, + "O2", + nullptr, + nullptr, + false, + nullptr, + mapleOption::BuildType::kBuildTypeAll, + mapleOption::ArgCheckPolicy::kArgCheckPolicyNone, + " -O2 \tDo more optimization. (Default)\n", + "all", + { { nullptr, nullptr, nullptr, nullptr } } }, { kMeOpt, 0, nullptr, @@ -1302,6 +1314,14 @@ ErrorCode MplOptions::DecideRunType() { optimizationLevel = kO0; } break; + case kOptimization2: + if (runMode == RunMode::kCustomRun) { // O0 and run should not appear at the same time + runModeConflict = true; + } else { + runMode = RunMode::kAutoRun; + optimizationLevel = kO2; + } + break; case kRun: if (runMode == RunMode::kAutoRun) { // O0 and run should not appear at the same time runModeConflict = true; @@ -1476,15 +1496,23 @@ ErrorCode MplOptions::AppendDefaultCombOptions() { if (ret != kErrorNoError) { return ret; } + } else if (optimizationLevel == kO2) { + ret = AppendDefaultOptions(kBinNameMe, kMeDefaultOptionsO2, sizeof(kMeDefaultOptionsO2) / sizeof(MplOption)); + if (ret != kErrorNoError) { + return ret; + } + ret = AppendDefaultOptions(kBinNameMpl2mpl, kMpl2MplDefaultOptionsO2, + sizeof(kMpl2MplDefaultOptionsO2) / sizeof(MplOption)); + if (ret != kErrorNoError) { + return ret; + } } return ret; } ErrorCode MplOptions::AppendDefaultCgOptions() { ErrorCode ret = kErrorNoError; - if (optimizationLevel == kO0) { - UpdateRunningExe(kBinNameMplcg); - } + UpdateRunningExe(kBinNameMplcg); return ret; } diff --git a/src/maple_driver/src/mplcg_compiler.cpp b/src/maple_driver/src/mplcg_compiler.cpp index 961e86b46fd1fccc16d91126cbb880fa06b9270a..bd629fdd9fcdb2efa2d9941fe0c86d22a6e329b8 100644 --- a/src/maple_driver/src/mplcg_compiler.cpp +++ b/src/maple_driver/src/mplcg_compiler.cpp @@ -27,6 +27,9 @@ DefaultOption MplcgCompiler::GetDefaultOptions(const MplOptions &options) const if (options.GetOptimizationLevel() == kO0 && options.HasSetDefaultLevel()) { defaultOptions.mplOptions = kMplcgDefaultOptionsO0; defaultOptions.length = sizeof(kMplcgDefaultOptionsO0) / sizeof(MplOption); + } else if (options.GetOptimizationLevel() == kO2 && options.HasSetDefaultLevel()) { + defaultOptions.mplOptions = kMplcgDefaultOptionsO2; + defaultOptions.length = sizeof(kMplcgDefaultOptionsO2) / sizeof(MplOption); } return defaultOptions; }