Mercurial > hg > CbC > CbC_llvm
changeset 12:449dd23ac5df
if input file has a __code , set HasCodeSegment flag
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 29 Jul 2013 21:48:18 +0900 |
parents | b7de57f78d3a |
children | 0c91843d63c0 |
files | tools/clang/include/clang/Frontend/CodeGenOptions.def tools/clang/lib/CodeGen/BackendUtil.cpp tools/clang/lib/Parse/ParseDecl.cpp tools/clang/tools/libclang/CIndex.cpp |
diffstat | 4 files changed, 15 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/tools/clang/include/clang/Frontend/CodeGenOptions.def Sun Jul 14 17:42:20 2013 +0900 +++ b/tools/clang/include/clang/Frontend/CodeGenOptions.def Mon Jul 29 21:48:18 2013 +0900 @@ -139,7 +139,6 @@ CODEGENOPT(SanitizeRecover, 1, 1) ///< Attempt to recover from sanitizer checks ///< by continuing execution when possible - #undef CODEGENOPT #undef ENUM_CODEGENOPT #undef VALUE_CODEGENOPT
--- a/tools/clang/lib/CodeGen/BackendUtil.cpp Sun Jul 14 17:42:20 2013 +0900 +++ b/tools/clang/lib/CodeGen/BackendUtil.cpp Mon Jul 29 21:48:18 2013 +0900 @@ -458,6 +458,10 @@ Options.PositionIndependentExecutable = LangOpts.PIELevel != 0; Options.SSPBufferSize = CodeGenOpts.SSPBufferSize; Options.EnableSegmentedStacks = CodeGenOpts.EnableSegmentedStacks; +#ifndef noCbC + Options.GuaranteedTailCallOpt = LangOpts.HasCodeSegment; +#endif + TargetMachine *TM = TheTarget->createTargetMachine(Triple, TargetOpts.CPU, FeaturesStr, Options,
--- a/tools/clang/lib/Parse/ParseDecl.cpp Sun Jul 14 17:42:20 2013 +0900 +++ b/tools/clang/lib/Parse/ParseDecl.cpp Mon Jul 29 21:48:18 2013 +0900 @@ -2875,10 +2875,16 @@ DiagID); break; #ifndef noCbC - case tok::kw___code: + case tok::kw___code: { + LangOptions* LOP; + // LangOptions LOC; + // LOC = getLangOpts(); + LOP = const_cast<LangOptions*>(&getLangOpts()); + LOP->HasCodeSegment = 1; isInvalid = DS.SetTypeSpecType(DeclSpec::TST___code, Loc, PrevSpec, - DiagID); + DiagID); break; + } #endif case tok::kw_char: isInvalid = DS.SetTypeSpecType(DeclSpec::TST_char, Loc, PrevSpec,
--- a/tools/clang/tools/libclang/CIndex.cpp Sun Jul 14 17:42:20 2013 +0900 +++ b/tools/clang/tools/libclang/CIndex.cpp Mon Jul 29 21:48:18 2013 +0900 @@ -1412,6 +1412,9 @@ switch (TL.getTypePtr()->getKind()) { case BuiltinType::Void: +#ifndef noCbC + case BuiltinType::__Code: +#endif case BuiltinType::NullPtr: case BuiltinType::Dependent: case BuiltinType::OCLImage1d: