This patch adds `flang -fc1` option `-ffp-maxmin-behavior` and propagates it throughout Flang, so that semantics context, lowering and the pass pipeline builder can use it. MAX/MIN intrinsic and OpenACC max/min reduction lowering are now controlled by the option. I kept the `Legacy` mode, which is the default and matches the current behavior. I am going to test and merge a follow-up patch that replaces `Legacy` with `Portable`. RFC: https://discourse.llvm.org/t/flang-canonical-and-optimizable-representation-for-min-max/90037
25 lines
906 B
C++
25 lines
906 B
C++
//===--- LoweringOptions.cpp ----------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Coding style: https://mlir.llvm.org/getting_started/DeveloperGuide/
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "flang/Lower/LoweringOptions.h"
|
|
|
|
namespace Fortran::lower {
|
|
|
|
LoweringOptions::LoweringOptions() : MathOptions{} {
|
|
#define LOWERINGOPT(Name, Bits, Default) Name = Default;
|
|
#define ENUM_LOWERINGOPT(Name, Type, Bits, Default) \
|
|
set##Name(static_cast<Type>(Default));
|
|
#include "flang/Lower/LoweringOptions.def"
|
|
}
|
|
|
|
} // namespace Fortran::lower
|