Append options for floating-point commutivity when related diagnostics are produced.
With this patch clang appends the command line options that would allow vectorization when floating-point commutativity is required. Specifically those are enabling fast-math or specifying a loop hint. llvm-svn: 244492
This commit is contained in:
@@ -256,6 +256,8 @@ namespace clang {
|
||||
const llvm::DiagnosticInfoOptimizationRemarkMissed &D);
|
||||
void OptimizationRemarkHandler(
|
||||
const llvm::DiagnosticInfoOptimizationRemarkAnalysis &D);
|
||||
void OptimizationRemarkHandler(
|
||||
const llvm::DiagnosticInfoOptimizationRemarkAnalysisFPCommute &D);
|
||||
void OptimizationFailureHandler(
|
||||
const llvm::DiagnosticInfoOptimizationFailure &D);
|
||||
};
|
||||
@@ -500,6 +502,17 @@ void BackendConsumer::OptimizationRemarkHandler(
|
||||
D, diag::remark_fe_backend_optimization_remark_analysis);
|
||||
}
|
||||
|
||||
void BackendConsumer::OptimizationRemarkHandler(
|
||||
const llvm::DiagnosticInfoOptimizationRemarkAnalysisFPCommute &D) {
|
||||
// Optimization analysis remarks are active only if the -Rpass-analysis
|
||||
// flag has a regular expression that matches the name of the pass
|
||||
// name in \p D.
|
||||
if (CodeGenOpts.OptimizationRemarkAnalysisPattern &&
|
||||
CodeGenOpts.OptimizationRemarkAnalysisPattern->match(D.getPassName()))
|
||||
EmitOptimizationMessage(
|
||||
D, diag::remark_fe_backend_optimization_remark_analysis_fpcommute);
|
||||
}
|
||||
|
||||
void BackendConsumer::OptimizationFailureHandler(
|
||||
const llvm::DiagnosticInfoOptimizationFailure &D) {
|
||||
EmitOptimizationMessage(D, diag::warn_fe_backend_optimization_failure);
|
||||
@@ -553,6 +566,12 @@ void BackendConsumer::DiagnosticHandlerImpl(const DiagnosticInfo &DI) {
|
||||
OptimizationRemarkHandler(
|
||||
cast<DiagnosticInfoOptimizationRemarkAnalysis>(DI));
|
||||
return;
|
||||
case llvm::DK_OptimizationRemarkAnalysisFPCommute:
|
||||
// Optimization remarks are always handled completely by this
|
||||
// handler. There is no generic way of emitting them.
|
||||
OptimizationRemarkHandler(
|
||||
cast<DiagnosticInfoOptimizationRemarkAnalysisFPCommute>(DI));
|
||||
return;
|
||||
case llvm::DK_OptimizationFailure:
|
||||
// Optimization failures are always handled completely by this
|
||||
// handler.
|
||||
|
||||
Reference in New Issue
Block a user