1*d415bd75Srobert //===- Utils.cpp - llvm-reduce utility functions --------------------------===// 2*d415bd75Srobert // 3*d415bd75Srobert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*d415bd75Srobert // See https://llvm.org/LICENSE.txt for license information. 5*d415bd75Srobert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*d415bd75Srobert // 7*d415bd75Srobert //===----------------------------------------------------------------------===// 8*d415bd75Srobert // 9*d415bd75Srobert // This file contains some utility functions supporting llvm-reduce. 10*d415bd75Srobert // 11*d415bd75Srobert //===----------------------------------------------------------------------===// 12*d415bd75Srobert 13*d415bd75Srobert #include "Utils.h" 14*d415bd75Srobert #include "llvm/IR/Constants.h" 15*d415bd75Srobert #include "llvm/IR/GlobalAlias.h" 16*d415bd75Srobert #include "llvm/IR/GlobalIFunc.h" 17*d415bd75Srobert 18*d415bd75Srobert using namespace llvm; 19*d415bd75Srobert 20*d415bd75Srobert extern cl::OptionCategory LLVMReduceOptions; 21*d415bd75Srobert 22*d415bd75Srobert cl::opt<bool> llvm::Verbose("verbose", 23*d415bd75Srobert cl::desc("Print extra debugging information"), 24*d415bd75Srobert cl::init(false), cl::cat(LLVMReduceOptions)); 25*d415bd75Srobert getDefaultValue(Type * T)26*d415bd75SrobertValue *llvm::getDefaultValue(Type *T) { 27*d415bd75Srobert return T->isVoidTy() ? PoisonValue::get(T) : Constant::getNullValue(T); 28*d415bd75Srobert } 29*d415bd75Srobert hasAliasUse(Function & F)30*d415bd75Srobertbool llvm::hasAliasUse(Function &F) { 31*d415bd75Srobert return any_of(F.users(), [](User *U) { 32*d415bd75Srobert return isa<GlobalAlias>(U) || isa<GlobalIFunc>(U); 33*d415bd75Srobert }); 34*d415bd75Srobert } 35*d415bd75Srobert hasAliasOrBlockAddressUse(Function & F)36*d415bd75Srobertbool llvm::hasAliasOrBlockAddressUse(Function &F) { 37*d415bd75Srobert return any_of(F.users(), [](User *U) { 38*d415bd75Srobert return isa<GlobalAlias, GlobalIFunc, BlockAddress>(U); 39*d415bd75Srobert }); 40*d415bd75Srobert } 41