Skip to content

Commit

Permalink
[Clang/Test]: Rename enable_noundef_analysis to disable-noundef-analy…
Browse files Browse the repository at this point in the history
…sis 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
  • Loading branch information
aqjune authored and hyeongyukim committed Oct 16, 2021
1 parent da2e1f6 commit 80dba72
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 6 deletions.
2 changes: 1 addition & 1 deletion clang/include/clang/Basic/CodeGenOptions.def
Expand Up @@ -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.
Expand Down
6 changes: 3 additions & 3 deletions clang/include/clang/Driver/Options.td
Expand Up @@ -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">>;
Expand Down
4 changes: 2 additions & 2 deletions clang/lib/CodeGen/CGCall.cpp
Expand Up @@ -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);
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 80dba72

Please sign in to comment.