<div dir="ltr">My target has multiple flavors which implemented as features. <div><br></div><div>Having a hardware divider is an example of a feature. It is implemented in Escala.td as</div><div><br></div><div><div>def FeatureDiv   : SubtargetFeature<"div", "HasDiv", "true",</div><div>                                   "Enable hardware divider">;</div><div><br></div><div><div>def : Proc<"escala", EscalaModel, [</div><div>                                     FeatureDiv</div><div>                                    ]>;</div></div><div><br></div><div>I've added a an extra option to void Clang::AddEscalaTargetArgs(...) in clang/lib/Driver/Tools.cpp to handle enabling/disabling of this feature</div><div><br></div><div><div>  if (Arg *A = Args.getLastArg(options::OPT_mhard_div,</div><div>                               options::OPT_msoft_div)) {</div><div>    CmdArgs.push_back("-target-feature");</div><div>    if (A->getOption().matches(options::OPT_mhard_div))</div><div>      CmdArgs.push_back("+div");</div><div>    else</div><div>      CmdArgs.push_back("-div");</div><div>  }</div></div><div><br></div><div>My expectation is that if I use -mhard-div the feature would be enabled and -msoft-div, it would be disabled. However I observed the following behavior.<br></div><div><br></div><div>If the feature is enabled (set to true) in Escala.td, ie.</div><div><br></div><div><div>def FeatureDiv   : SubtargetFeature<"div", "HasDiv", "true",</div><div>                                   "Enable hardware divider">;</div></div><div><br></div><div>then -mhard-div has no effect and -msoft-div disables the divider. </div><div><br></div><div>If the feature is disabled (set to false) in Escala.td, i.e. </div><div><div>def FeatureDiv   : SubtargetFeature<"div", "HasDiv", "false",</div><div>                                   "Enable hardware divider">;</div></div><div><br></div><div>then -mhard-div and -msoft-div have no effect. The compiler will automatically make an assumption to use a soft divider. <br></div><div><br></div><div>Here are my questions:</div><div><br></div><div>1. Is this the intended behavior?</div><div>2. If isn't then how do I enable a disabled feature through a command line? In other words if a feature is disabled (set to false) in .td file, is it possible to enable it? For my specific case, if </div><div><br></div><div>def FeatureDiv   : SubtargetFeature<"div", "HasDiv", "false", // note "'false"</div><div>                                   "Enable hardware divider">;</div><div><br></div><div>is it possible to enable it through a command line?</div><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Rail Shafigulin<br></div>Software Engineer <br>Esencia Technologies<br></div></div></div></div>
</div></div>