120110521SMatt Arsenault //===- ReduceInstructionFlagsMIR.cpp - Specialized Delta Pass -------------===// 220110521SMatt Arsenault // 320110521SMatt Arsenault // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 420110521SMatt Arsenault // See https://llvm.org/LICENSE.txt for license information. 520110521SMatt Arsenault // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 620110521SMatt Arsenault // 720110521SMatt Arsenault //===----------------------------------------------------------------------===// 820110521SMatt Arsenault // 920110521SMatt Arsenault // This file implements a function which calls the Generic Delta pass in order 1020110521SMatt Arsenault // to reduce uninteresting MachineInstr flags from the MachineFunction. 1120110521SMatt Arsenault // 1220110521SMatt Arsenault //===----------------------------------------------------------------------===// 1320110521SMatt Arsenault 1420110521SMatt Arsenault #include "ReduceInstructionFlagsMIR.h" 1520110521SMatt Arsenault #include "llvm/CodeGen/MachineFunction.h" 16*333ffafbSMatt Arsenault #include "llvm/CodeGen/MachineModuleInfo.h" 1720110521SMatt Arsenault using namespace llvm; 1820110521SMatt Arsenault removeFlagsFromModule(Oracle & O,ReducerWorkItem & WorkItem)1920110521SMatt Arsenaultstatic void removeFlagsFromModule(Oracle &O, ReducerWorkItem &WorkItem) { 2020110521SMatt Arsenault for (const Function &F : WorkItem.getModule()) { 2120110521SMatt Arsenault if (auto *MF = WorkItem.MMI->getMachineFunction(F)) { 2220110521SMatt Arsenault for (MachineBasicBlock &MBB : *MF) { 2320110521SMatt Arsenault for (MachineInstr &MI : MBB) { 2420110521SMatt Arsenault // TODO: Should this clear flags individually? 2520110521SMatt Arsenault if (MI.getFlags() != 0 && !O.shouldKeep()) 2620110521SMatt Arsenault MI.setFlags(0); 2720110521SMatt Arsenault } 2820110521SMatt Arsenault } 2920110521SMatt Arsenault } 3020110521SMatt Arsenault } 3120110521SMatt Arsenault } 3220110521SMatt Arsenault reduceInstructionFlagsMIRDeltaPass(TestRunner & Test)3320110521SMatt Arsenaultvoid llvm::reduceInstructionFlagsMIRDeltaPass(TestRunner &Test) { 342592ccdeSArthur Eubanks runDeltaPass(Test, removeFlagsFromModule, "Reducing Instruction Flags"); 3520110521SMatt Arsenault } 36