1176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines//===--- Sanitizers.cpp - C Language Family Language Options ----*- C++ -*-===// 2176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// 3176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// The LLVM Compiler Infrastructure 4176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// 5176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// This file is distributed under the University of Illinois Open Source 6176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// License. See LICENSE.TXT for details. 7176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// 8176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines//===----------------------------------------------------------------------===// 9176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// 10176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// This file defines the classes from Sanitizers.h 11176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// 12176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines//===----------------------------------------------------------------------===// 13176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#include "clang/Basic/Sanitizers.h" 14176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 15176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesusing namespace clang; 16176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 17176edba5311f6eff0cad2631449885ddf4fbc9eaStephen HinesSanitizerSet::SanitizerSet() : Kinds(0) {} 18176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 19176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesbool SanitizerSet::has(SanitizerKind K) const { 20176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines unsigned Bit = static_cast<unsigned>(K); 21176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines return Kinds & (1 << Bit); 22176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines} 23176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 24176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesvoid SanitizerSet::set(SanitizerKind K, bool Value) { 25176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines unsigned Bit = static_cast<unsigned>(K); 26176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines Kinds = Value ? (Kinds | (1 << Bit)) : (Kinds & ~(1 << Bit)); 27176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines} 28176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 29176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesvoid SanitizerSet::clear() { 30176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines Kinds = 0; 31176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines} 32176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 33176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesbool SanitizerSet::empty() const { 34176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines return Kinds == 0; 35176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines} 36