Files
Reid Kleckner afe76c5beb [Options] Add IR-unit helpers for per-context library options (#234761)
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
2026-10-23 15:23:39 -07:00

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());
}