10fbb2615SArthur Eubanks //===- StripDebugInfo.cpp -------------------------------------------------===// 20fbb2615SArthur Eubanks // 30fbb2615SArthur Eubanks // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40fbb2615SArthur Eubanks // See https://llvm.org/LICENSE.txt for license information. 50fbb2615SArthur Eubanks // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60fbb2615SArthur Eubanks // 70fbb2615SArthur Eubanks //===----------------------------------------------------------------------===// 80fbb2615SArthur Eubanks 90fbb2615SArthur Eubanks #include "StripDebugInfo.h" 100fbb2615SArthur Eubanks #include "Delta.h" 110fbb2615SArthur Eubanks #include "llvm/IR/DebugInfo.h" 120fbb2615SArthur Eubanks #include "llvm/IR/Metadata.h" 130fbb2615SArthur Eubanks 140fbb2615SArthur Eubanks using namespace llvm; 150fbb2615SArthur Eubanks 160fbb2615SArthur Eubanks /// Removes all aliases aren't inside any of the 170fbb2615SArthur Eubanks /// desired Chunks. stripDebugInfoImpl(Oracle & O,ReducerWorkItem & WorkItem)1823cc36e4SMatt Arsenaultstatic void stripDebugInfoImpl(Oracle &O, ReducerWorkItem &WorkItem) { 1923cc36e4SMatt Arsenault Module &Program = WorkItem.getModule(); 200fbb2615SArthur Eubanks bool HasDebugInfo = any_of(Program.named_metadata(), [](NamedMDNode &NMD) { 21*586ecdf2SKazu Hirata return NMD.getName().starts_with("llvm.dbg."); 220fbb2615SArthur Eubanks }); 230fbb2615SArthur Eubanks if (HasDebugInfo && !O.shouldKeep()) 240fbb2615SArthur Eubanks StripDebugInfo(Program); 250fbb2615SArthur Eubanks } 260fbb2615SArthur Eubanks stripDebugInfoDeltaPass(TestRunner & Test)270fbb2615SArthur Eubanksvoid llvm::stripDebugInfoDeltaPass(TestRunner &Test) { 280fbb2615SArthur Eubanks runDeltaPass(Test, stripDebugInfoImpl, "Stripping Debug Info"); 290fbb2615SArthur Eubanks } 30