1*67e74705SXin Li //===--- LangOptions.cpp - C Language Family Language Options ---*- C++ -*-===//
2*67e74705SXin Li //
3*67e74705SXin Li // The LLVM Compiler Infrastructure
4*67e74705SXin Li //
5*67e74705SXin Li // This file is distributed under the University of Illinois Open Source
6*67e74705SXin Li // License. See LICENSE.TXT for details.
7*67e74705SXin Li //
8*67e74705SXin Li //===----------------------------------------------------------------------===//
9*67e74705SXin Li //
10*67e74705SXin Li // This file defines the LangOptions class.
11*67e74705SXin Li //
12*67e74705SXin Li //===----------------------------------------------------------------------===//
13*67e74705SXin Li #include "clang/Basic/LangOptions.h"
14*67e74705SXin Li #include "llvm/ADT/StringRef.h"
15*67e74705SXin Li
16*67e74705SXin Li using namespace clang;
17*67e74705SXin Li
LangOptions()18*67e74705SXin Li LangOptions::LangOptions() {
19*67e74705SXin Li #define LANGOPT(Name, Bits, Default, Description) Name = Default;
20*67e74705SXin Li #define ENUM_LANGOPT(Name, Type, Bits, Default, Description) set##Name(Default);
21*67e74705SXin Li #include "clang/Basic/LangOptions.def"
22*67e74705SXin Li }
23*67e74705SXin Li
resetNonModularOptions()24*67e74705SXin Li void LangOptions::resetNonModularOptions() {
25*67e74705SXin Li #define LANGOPT(Name, Bits, Default, Description)
26*67e74705SXin Li #define BENIGN_LANGOPT(Name, Bits, Default, Description) Name = Default;
27*67e74705SXin Li #define BENIGN_ENUM_LANGOPT(Name, Type, Bits, Default, Description) \
28*67e74705SXin Li Name = Default;
29*67e74705SXin Li #include "clang/Basic/LangOptions.def"
30*67e74705SXin Li
31*67e74705SXin Li // FIXME: This should not be reset; modules can be different with different
32*67e74705SXin Li // sanitizer options (this affects __has_feature(address_sanitizer) etc).
33*67e74705SXin Li Sanitize.clear();
34*67e74705SXin Li SanitizerBlacklistFiles.clear();
35*67e74705SXin Li
36*67e74705SXin Li CurrentModule.clear();
37*67e74705SXin Li }
38*67e74705SXin Li
isNoBuiltinFunc(const char * Name) const39*67e74705SXin Li bool LangOptions::isNoBuiltinFunc(const char *Name) const {
40*67e74705SXin Li StringRef FuncName(Name);
41*67e74705SXin Li for (unsigned i = 0, e = NoBuiltinFuncs.size(); i != e; ++i)
42*67e74705SXin Li if (FuncName.equals(NoBuiltinFuncs[i]))
43*67e74705SXin Li return true;
44*67e74705SXin Li return false;
45*67e74705SXin Li }
46