mirror of
https://github.com/llvm/llvm-project.git
synced 2026-10-26 13:53:31 +08:00
Add free functions alongside the private option structures so callers can use getScalarOptions(L) instead of spelling out the loop-header and context access chain. This should make option checks much more readable: ``` if (getCodeGenOptions(MF).CGOpt) if (getScalarOptions(Fn).ScalarSetting) ``` Before we'd do: ``` if (MF.getFunction().getContext().getLibraryOptions().get<CodeGenOptions>().CGOpt) ``` The MachineFunction CGOpt lookup is prevalent in our downstream with loads of tunables, but I found many opportunities to improve readability in the upstream Transform libraries. LLM-aided
34 lines
1.1 KiB
C++
34 lines
1.1 KiB
C++
//===----------------------------------------------------------------------===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "CodeGenOptions.h"
|
|
#include "llvm/CodeGen/MachineFunction.h"
|
|
#include "llvm/IR/Function.h"
|
|
#include "llvm/IR/LLVMContext.h"
|
|
#include "llvm/IR/Module.h"
|
|
#include "llvm/Option/LibraryOptions.h"
|
|
|
|
#define OPTIONS_STRUCT_DEFS
|
|
#include "CodeGenOptions.inc"
|
|
|
|
using namespace llvm;
|
|
|
|
static llvm::opt::RegisterLibraryOptions<llvm::CodeGenOptions> Registration;
|
|
|
|
const CodeGenOptions &llvm::getCodeGenOptions(const LLVMContext &C) {
|
|
return C.getLibraryOptions().get<CodeGenOptions>();
|
|
}
|
|
|
|
const CodeGenOptions &llvm::getCodeGenOptions(const Module &M) {
|
|
return getCodeGenOptions(M.getContext());
|
|
}
|
|
|
|
const CodeGenOptions &llvm::getCodeGenOptions(const MachineFunction &MF) {
|
|
return getCodeGenOptions(MF.getFunction().getContext());
|
|
}
|