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