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