[Clang/Test]: Rename enable_noundef_analysis to disable-noundef-analysis and turn it off by default

Turning on `enable_noundef_analysis` flag allows better codegen by removing freeze instructions.
I modified clang by renaming `enable_noundef_analysis` flag to `disable-noundef-analysis` and turning it off by default.

Test updates are made as a separate patch: D108453

Reviewed By: eugenis

Differential Revision: https://reviews.llvm.org/D105169
This commit is contained in:
Juneyoung Lee
2021-10-15 19:26:07 +09:00
committed by hyeongyu kim
parent da2e1f622d
commit 80dba72a66
3 changed files with 6 additions and 6 deletions

View File

@@ -64,7 +64,7 @@ CODEGENOPT(DisableLifetimeMarkers, 1, 0) ///< Don't emit any lifetime markers
CODEGENOPT(DisableO0ImplyOptNone , 1, 0) ///< Don't annonate function with optnone at O0
CODEGENOPT(ExperimentalStrictFloatingPoint, 1, 0) ///< Enables the new, experimental
///< strict floating point.
CODEGENOPT(EnableNoundefAttrs, 1, 0) ///< Enable emitting `noundef` attributes on IR call arguments and return values
CODEGENOPT(DisableNoundefAttrs, 1, 0) ///< Disable emitting `noundef` attributes on IR call arguments and return values
CODEGENOPT(LegacyPassManager, 1, 0) ///< Use the legacy pass manager.
CODEGENOPT(DebugPassManager, 1, 0) ///< Prints debug information for the new
///< pass manager.

View File

@@ -5314,9 +5314,9 @@ def disable_free : Flag<["-"], "disable-free">,
def clear_ast_before_backend : Flag<["-"], "clear-ast-before-backend">,
HelpText<"Clear the Clang AST before running backend code generation">,
MarshallingInfoFlag<CodeGenOpts<"ClearASTBeforeBackend">>;
def enable_noundef_analysis : Flag<["-"], "enable-noundef-analysis">, Group<f_Group>,
HelpText<"Enable analyzing function argument and return types for mandatory definedness">,
MarshallingInfoFlag<CodeGenOpts<"EnableNoundefAttrs">>;
def disable_noundef_analysis : Flag<["-"], "disable-noundef-analysis">, Group<f_Group>,
HelpText<"Disable analyzing function argument and return types for mandatory definedness">,
MarshallingInfoFlag<CodeGenOpts<"DisableNoundefAttrs">>;
def discard_value_names : Flag<["-"], "discard-value-names">,
HelpText<"Discard value names in LLVM IR">,
MarshallingInfoFlag<CodeGenOpts<"DiscardValueNames">>;

View File

@@ -2255,7 +2255,7 @@ void CodeGenModule::ConstructAttributeList(
getLangOpts().Sanitize.has(SanitizerKind::Return);
// Determine if the return type could be partially undef
if (CodeGenOpts.EnableNoundefAttrs && HasStrictReturn) {
if (!CodeGenOpts.DisableNoundefAttrs && HasStrictReturn) {
if (!RetTy->isVoidType() && RetAI.getKind() != ABIArgInfo::Indirect &&
DetermineNoUndef(RetTy, getTypes(), DL, RetAI))
RetAttrs.addAttribute(llvm::Attribute::NoUndef);
@@ -2390,7 +2390,7 @@ void CodeGenModule::ConstructAttributeList(
// Decide whether the argument we're handling could be partially undef
bool ArgNoUndef = DetermineNoUndef(ParamType, getTypes(), DL, AI);
if (CodeGenOpts.EnableNoundefAttrs && ArgNoUndef)
if (!CodeGenOpts.DisableNoundefAttrs && ArgNoUndef)
Attrs.addAttribute(llvm::Attribute::NoUndef);
// 'restrict' -> 'noalias' is done in EmitFunctionProlog when we