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, ExtractChunksFromModule: clearModuleData, Message: "Reducing Module Data");
31}
32