1//===- ReduceModuleData.cpp -----------------------------------------------===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8// 9// This file implements a reduce pass to reduce various module data. 10// 11//===----------------------------------------------------------------------===// 12 13#include "ReduceModuleData.h" 14 15using namespace llvm; 16 17static void clearModuleData(Oracle &O, ReducerWorkItem &WorkItem) { 18 Module &Program = WorkItem.getModule(); 19 20 if (!Program.getModuleIdentifier().empty() && !O.shouldKeep()) 21 Program.setModuleIdentifier(""); 22 if (!Program.getSourceFileName().empty() && !O.shouldKeep()) 23 Program.setSourceFileName(""); 24 // TODO: clear line by line rather than all at once 25 if (!Program.getModuleInlineAsm().empty() && !O.shouldKeep()) 26 Program.setModuleInlineAsm(""); 27} 28 29void llvm::reduceModuleDataDeltaPass(TestRunner &Test) { 30 runDeltaPass(Test, clearModuleData, "Reducing Module Data"); 31} 32