From ad225122c268784e99030f2c08d49f1b0de19af7 Mon Sep 17 00:00:00 2001 From: shubhamnarlawar77 Date: Mon, 17 Jun 2019 14:18:36 +0530 Subject: [PATCH] Added support for Noclone and Optimize Function Attribute --- src/Function.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Function.cpp b/src/Function.cpp index 55bee2106..788e38b4b 100644 --- a/src/Function.cpp +++ b/src/Function.cpp @@ -82,6 +82,7 @@ static int builtin_functions_cnt; static std::vector common_func_attributes; static std::vector visibility_choices; static std::vector sanitize_choices; +static std::vector optimize_options; void InitializeAttributesChoices() @@ -107,6 +108,7 @@ InitializeAttributesChoices() common_func_attributes.push_back("noinline"); common_func_attributes.push_back("noplt"); common_func_attributes.push_back("stack_protect"); + common_func_attributes.push_back("noclone"); //Pushing visibility choices visibility_choices.push_back("default"); @@ -122,6 +124,15 @@ InitializeAttributesChoices() sanitize_choices.push_back("pointer-compare"); sanitize_choices.push_back("pointer-subtract"); sanitize_choices.push_back("leak"); + + //pushing optimization options + optimize_options.push_back("-O0"); + optimize_options.push_back("-O1"); + optimize_options.push_back("-O2"); + optimize_options.push_back("-O3"); + optimize_options.push_back("-Os"); + optimize_options.push_back("-Ofast"); + optimize_options.push_back("-Og"); } void @@ -135,6 +146,7 @@ Function::InitializeAttributes() func_attr_generator.attributes.push_back(new MultiChoiceAttribute("visibility", FuncAttrProb, visibility_choices)); func_attr_generator.attributes.push_back(new MultiChoiceAttribute("no_sanitize", FuncAttrProb, sanitize_choices)); + func_attr_generator.attributes.push_back(new MultiChoiceAttribute("optimize", FuncAttrProb, optimize_options)); func_attr_generator.attributes.push_back(new AlignedAttribute("aligned", FuncAttrProb, 16)); func_attr_generator.attributes.push_back(new SectionAttribute("section", FuncAttrProb)); }