ReduceModuleData.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  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. #include "ReduceModuleData.h"
  13. using namespace llvm;
  14. static void clearModuleData(Oracle &O, Module &Program) {
  15. if (!Program.getModuleIdentifier().empty() && !O.shouldKeep())
  16. Program.setModuleIdentifier("");
  17. if (!Program.getSourceFileName().empty() && !O.shouldKeep())
  18. Program.setSourceFileName("");
  19. if (!Program.getDataLayoutStr().empty() && !O.shouldKeep())
  20. Program.setDataLayout("");
  21. if (!Program.getTargetTriple().empty() && !O.shouldKeep())
  22. Program.setTargetTriple("");
  23. // TODO: clear line by line rather than all at once
  24. if (!Program.getModuleInlineAsm().empty() && !O.shouldKeep())
  25. Program.setModuleInlineAsm("");
  26. }
  27. void llvm::reduceModuleDataDeltaPass(TestRunner &Test) {
  28. outs() << "*** Reducing Module Data...\n";
  29. runDeltaPass(Test, clearModuleData);
  30. }