r346837 - [Clang] - Add '-gsplit-dwarf[=split, =single]' version for '-gsplit-dwarf' option.

2018-11-14 Thread George Rimar via cfe-commits
Author: grimar
Date: Wed Nov 14 01:22:16 2018
New Revision: 346837

URL: http://llvm.org/viewvc/llvm-project?rev=346837&view=rev
Log:
[Clang] - Add '-gsplit-dwarf[=split,=single]' version for '-gsplit-dwarf' 
option.

The DWARF5 specification says(Appendix F.1):

"The sections that do not require relocation, however, can be
written to the relocatable object (.o) file but ignored by the
linker or they can be written to a separate DWARF object (.dwo)
file that need not be accessed by the linker."

The first part describes a single file split DWARF feature and there
is no way to trigger this behavior atm. 
Fortunately, no many changes are required to keep *.dwo sections
in a .o, the patch does that.

Differential revision: https://reviews.llvm.org/D52296

Added:
cfe/trunk/test/CodeGen/split-debug-single-file.c
Modified:
cfe/trunk/include/clang/Driver/CC1Options.td
cfe/trunk/include/clang/Driver/Options.td
cfe/trunk/include/clang/Frontend/CodeGenOptions.def
cfe/trunk/include/clang/Frontend/CodeGenOptions.h
cfe/trunk/lib/CodeGen/BackendUtil.cpp
cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
cfe/trunk/lib/Driver/ToolChains/Clang.cpp
cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
cfe/trunk/lib/Driver/ToolChains/CommonArgs.h
cfe/trunk/lib/Driver/ToolChains/Gnu.cpp
cfe/trunk/lib/Driver/ToolChains/MinGW.cpp
cfe/trunk/lib/Frontend/CompilerInvocation.cpp
cfe/trunk/test/Driver/split-debug.c
cfe/trunk/test/Driver/split-debug.s

Modified: cfe/trunk/include/clang/Driver/CC1Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=346837&r1=346836&r2=346837&view=diff
==
--- cfe/trunk/include/clang/Driver/CC1Options.td (original)
+++ cfe/trunk/include/clang/Driver/CC1Options.td Wed Nov 14 01:22:16 2018
@@ -649,7 +649,9 @@ def fblocks_runtime_optional : Flag<["-"
 def fexternc_nounwind : Flag<["-"], "fexternc-nounwind">,
   HelpText<"Assume all functions with C linkage do not unwind">;
 def enable_split_dwarf : Flag<["-"], "enable-split-dwarf">,
-  HelpText<"Use split dwarf/Fission">;
+  HelpText<"Use DWARF fission in 'split' mode">;
+def enable_split_dwarf_EQ : Joined<["-"], "enable-split-dwarf=">,
+  HelpText<"Set DWARF fission mode to either 'split' or 'single'">, 
Values<"split,single">;
 def fno_wchar : Flag<["-"], "fno-wchar">,
   HelpText<"Disable C++ builtin type wchar_t">;
 def fconstant_string_class : Separate<["-"], "fconstant-string-class">,

Modified: cfe/trunk/include/clang/Driver/Options.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=346837&r1=346836&r2=346837&view=diff
==
--- cfe/trunk/include/clang/Driver/Options.td (original)
+++ cfe/trunk/include/clang/Driver/Options.td Wed Nov 14 01:22:16 2018
@@ -1840,6 +1840,9 @@ def gno_strict_dwarf : Flag<["-"], "gno-
 def gcolumn_info : Flag<["-"], "gcolumn-info">, Group, 
Flags<[CoreOption]>;
 def gno_column_info : Flag<["-"], "gno-column-info">, Group, 
Flags<[CoreOption]>;
 def gsplit_dwarf : Flag<["-"], "gsplit-dwarf">, Group;
+def gsplit_dwarf_EQ : Joined<["-"], "gsplit-dwarf=">, Group,
+  HelpText<"Set DWARF fission mode to either 'split' or 'single'">,
+  Values<"split,single">;
 def ggnu_pubnames : Flag<["-"], "ggnu-pubnames">, Group, 
Flags<[CC1Option]>;
 def gno_gnu_pubnames : Flag<["-"], "gno-gnu-pubnames">, Group, 
Flags<[CC1Option]>;
 def gpubnames : Flag<["-"], "gpubnames">, Group, 
Flags<[CC1Option]>;

Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.def
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.def?rev=346837&r1=346836&r2=346837&view=diff
==
--- cfe/trunk/include/clang/Frontend/CodeGenOptions.def (original)
+++ cfe/trunk/include/clang/Frontend/CodeGenOptions.def Wed Nov 14 01:22:16 2018
@@ -252,7 +252,9 @@ CODEGENOPT(DebugTypeExtRefs, 1, 0) ///<
 CODEGENOPT(DebugExplicitImport, 1, 0)  ///< Whether or not debug info should
///< contain explicit imports for
///< anonymous namespaces
-CODEGENOPT(EnableSplitDwarf, 1, 0) ///< Whether to enable split DWARF
+
+ENUM_CODEGENOPT(SplitDwarfMode, DwarfFissionKind, 2, NoFission) ///< DWARF 
fission mode to use.
+
 CODEGENOPT(SplitDwarfInlining, 1, 1) ///< Whether to include inlining info in 
the
  ///< skeleton CU to allow for 
symbolication
  ///< of inline stack frames without .dwo 
files.

Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.h?rev=346837&r1=346836&r2=346837&view=diff

r347035 - [clang] - Simplify tools::SplitDebugName.

2018-11-16 Thread George Rimar via cfe-commits
Author: grimar
Date: Thu Nov 15 23:59:24 2018
New Revision: 347035

URL: http://llvm.org/viewvc/llvm-project?rev=347035&view=rev
Log:
[clang] - Simplify tools::SplitDebugName.

This should be NFC change.

SplitDebugName recently started to accept the `Output` that
can be used to simplify the logic a bit, also it
seems that code in SplitDebugName that uses
OPT_fdebug_compilation_dir is simply dead.

Differential revision: https://reviews.llvm.org/D54576

Modified:
cfe/trunk/lib/Driver/ToolChains/Clang.cpp
cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
cfe/trunk/lib/Driver/ToolChains/CommonArgs.h
cfe/trunk/lib/Driver/ToolChains/Gnu.cpp
cfe/trunk/lib/Driver/ToolChains/MinGW.cpp

Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=347035&r1=347034&r2=347035&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Thu Nov 15 23:59:24 2018
@@ -3936,7 +3936,7 @@ void Clang::ConstructJob(Compilation &C,
   const char *SplitDWARFOut;
   if (SplitDWARF) {
 CmdArgs.push_back("-split-dwarf-file");
-SplitDWARFOut = SplitDebugName(Args, Input, Output);
+SplitDWARFOut = SplitDebugName(Args, Output);
 CmdArgs.push_back(SplitDWARFOut);
   }
 
@@ -5902,7 +5902,7 @@ void ClangAs::ConstructJob(Compilation &
   if ((getDebugFissionKind(D, Args, A) == DwarfFissionKind::Split) &&
   (T.isOSLinux() || T.isOSFuchsia())) {
 CmdArgs.push_back("-split-dwarf-file");
-CmdArgs.push_back(SplitDebugName(Args, Input, Output));
+CmdArgs.push_back(SplitDebugName(Args, Output));
   }
 
   assert(Input.isFilename() && "Invalid input.");

Modified: cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp?rev=347035&r1=347034&r2=347035&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp Thu Nov 15 23:59:24 2018
@@ -808,26 +808,15 @@ bool tools::areOptimizationsEnabled(cons
   return false;
 }
 
-const char *tools::SplitDebugName(const ArgList &Args, const InputInfo &Input,
+const char *tools::SplitDebugName(const ArgList &Args,
   const InputInfo &Output) {
   if (Arg *A = Args.getLastArg(options::OPT_gsplit_dwarf_EQ))
 if (StringRef(A->getValue()) == "single")
   return Args.MakeArgString(Output.getFilename());
 
-  Arg *FinalOutput = Args.getLastArg(options::OPT_o);
-  if (FinalOutput && Args.hasArg(options::OPT_c)) {
-SmallString<128> T(FinalOutput->getValue());
-llvm::sys::path::replace_extension(T, "dwo");
-return Args.MakeArgString(T);
-  } else {
-// Use the compilation dir.
-SmallString<128> T(
-Args.getLastArgValue(options::OPT_fdebug_compilation_dir));
-SmallString<128> F(llvm::sys::path::stem(Input.getBaseInput()));
-llvm::sys::path::replace_extension(F, "dwo");
-T += F;
-return Args.MakeArgString(F);
-  }
+  SmallString<128> T(Output.getFilename());
+  llvm::sys::path::replace_extension(T, "dwo");
+  return Args.MakeArgString(T);
 }
 
 void tools::SplitDebugInfo(const ToolChain &TC, Compilation &C, const Tool &T,

Modified: cfe/trunk/lib/Driver/ToolChains/CommonArgs.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/CommonArgs.h?rev=347035&r1=347034&r2=347035&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains/CommonArgs.h (original)
+++ cfe/trunk/lib/Driver/ToolChains/CommonArgs.h Thu Nov 15 23:59:24 2018
@@ -63,7 +63,7 @@ void AddHIPLinkerScript(const ToolChain
 const Tool &T);
 
 const char *SplitDebugName(const llvm::opt::ArgList &Args,
-   const InputInfo &Input, const InputInfo &Output);
+   const InputInfo &Output);
 
 void SplitDebugInfo(const ToolChain &TC, Compilation &C, const Tool &T,
 const JobAction &JA, const llvm::opt::ArgList &Args,

Modified: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Gnu.cpp?rev=347035&r1=347034&r2=347035&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp Thu Nov 15 23:59:24 2018
@@ -817,7 +817,7 @@ void tools::gnutools::Assembler::Constru
   if (Args.hasArg(options::OPT_gsplit_dwarf) &&
   getToolChain().getTriple().isOSLinux())
 SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output,
-   SplitDebugName(Args, Inputs[0], Output));
+   SplitDebugName(Args, Output));
 }
 
 namespace {

Modif

r348352 - [clang] - Simplify tools::SplitDebugName.

2018-12-05 Thread George Rimar via cfe-commits
Author: grimar
Date: Wed Dec  5 03:09:10 2018
New Revision: 348352

URL: http://llvm.org/viewvc/llvm-project?rev=348352&view=rev
Log:
[clang] - Simplify tools::SplitDebugName.

This is an updated version of the D54576, which was reverted.

Problem was that SplitDebugName calls the InputInfo::getFilename
which asserts if InputInfo given is not of type Filename:

const char *getFilename() const {
  assert(isFilename() && "Invalid accessor.");
  return Data.Filename;
}
At the same time at that point, it can be of type Nothing and
we need to use getBaseInput(), like original code did.

Differential revision: https://reviews.llvm.org/D55006

Modified:
cfe/trunk/lib/Driver/ToolChains/Clang.cpp
cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
cfe/trunk/lib/Driver/ToolChains/CommonArgs.h
cfe/trunk/lib/Driver/ToolChains/Gnu.cpp
cfe/trunk/lib/Driver/ToolChains/MinGW.cpp
cfe/trunk/test/Tooling/clang-check-extra-arg.cpp

Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=348352&r1=348351&r2=348352&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Wed Dec  5 03:09:10 2018
@@ -3949,7 +3949,7 @@ void Clang::ConstructJob(Compilation &C,
   const char *SplitDWARFOut;
   if (SplitDWARF) {
 CmdArgs.push_back("-split-dwarf-file");
-SplitDWARFOut = SplitDebugName(Args, Input, Output);
+SplitDWARFOut = SplitDebugName(Args, Output);
 CmdArgs.push_back(SplitDWARFOut);
   }
 
@@ -5916,7 +5916,7 @@ void ClangAs::ConstructJob(Compilation &
   if ((getDebugFissionKind(D, Args, A) == DwarfFissionKind::Split) &&
   (T.isOSLinux() || T.isOSFuchsia())) {
 CmdArgs.push_back("-split-dwarf-file");
-CmdArgs.push_back(SplitDebugName(Args, Input, Output));
+CmdArgs.push_back(SplitDebugName(Args, Output));
   }
 
   assert(Input.isFilename() && "Invalid input.");

Modified: cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp?rev=348352&r1=348351&r2=348352&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp Wed Dec  5 03:09:10 2018
@@ -808,26 +808,18 @@ bool tools::areOptimizationsEnabled(cons
   return false;
 }
 
-const char *tools::SplitDebugName(const ArgList &Args, const InputInfo &Input,
+const char *tools::SplitDebugName(const ArgList &Args,
   const InputInfo &Output) {
+  SmallString<128> F(Output.isFilename()
+ ? Output.getFilename()
+ : llvm::sys::path::stem(Output.getBaseInput()));
+
   if (Arg *A = Args.getLastArg(options::OPT_gsplit_dwarf_EQ))
 if (StringRef(A->getValue()) == "single")
-  return Args.MakeArgString(Output.getFilename());
+  return Args.MakeArgString(F);
 
-  Arg *FinalOutput = Args.getLastArg(options::OPT_o);
-  if (FinalOutput && Args.hasArg(options::OPT_c)) {
-SmallString<128> T(FinalOutput->getValue());
-llvm::sys::path::replace_extension(T, "dwo");
-return Args.MakeArgString(T);
-  } else {
-// Use the compilation dir.
-SmallString<128> T(
-Args.getLastArgValue(options::OPT_fdebug_compilation_dir));
-SmallString<128> F(llvm::sys::path::stem(Input.getBaseInput()));
-llvm::sys::path::replace_extension(F, "dwo");
-T += F;
-return Args.MakeArgString(F);
-  }
+  llvm::sys::path::replace_extension(F, "dwo");
+  return Args.MakeArgString(F);
 }
 
 void tools::SplitDebugInfo(const ToolChain &TC, Compilation &C, const Tool &T,

Modified: cfe/trunk/lib/Driver/ToolChains/CommonArgs.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/CommonArgs.h?rev=348352&r1=348351&r2=348352&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains/CommonArgs.h (original)
+++ cfe/trunk/lib/Driver/ToolChains/CommonArgs.h Wed Dec  5 03:09:10 2018
@@ -63,7 +63,7 @@ void AddHIPLinkerScript(const ToolChain
 const Tool &T);
 
 const char *SplitDebugName(const llvm::opt::ArgList &Args,
-   const InputInfo &Input, const InputInfo &Output);
+   const InputInfo &Output);
 
 void SplitDebugInfo(const ToolChain &TC, Compilation &C, const Tool &T,
 const JobAction &JA, const llvm::opt::ArgList &Args,

Modified: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Gnu.cpp?rev=348352&r1=348351&r2=348352&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp (original)
+++ cfe/trunk/lib/Driver/To

r357061 - Revert the r348352 "[clang] - Simplify tools::SplitDebugName."

2019-03-27 Thread George Rimar via cfe-commits
Author: grimar
Date: Wed Mar 27 04:00:03 2019
New Revision: 357061

URL: http://llvm.org/viewvc/llvm-project?rev=357061&view=rev
Log:
Revert the r348352 "[clang] - Simplify tools::SplitDebugName."

This partially reverts the r348352 (https://reviews.llvm.org/D55006)
because of https://bugs.llvm.org/show_bug.cgi?id=41161.

I did not revert the test case file because it passes fine now.

Modified:
cfe/trunk/lib/Driver/ToolChains/Clang.cpp
cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
cfe/trunk/lib/Driver/ToolChains/CommonArgs.h
cfe/trunk/lib/Driver/ToolChains/Gnu.cpp
cfe/trunk/lib/Driver/ToolChains/MinGW.cpp

Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=357061&r1=357060&r2=357061&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Wed Mar 27 04:00:03 2019
@@ -4083,7 +4083,7 @@ void Clang::ConstructJob(Compilation &C,
   const char *SplitDWARFOut;
   if (SplitDWARF) {
 CmdArgs.push_back("-split-dwarf-file");
-SplitDWARFOut = SplitDebugName(Args, Output);
+SplitDWARFOut = SplitDebugName(Args, Input, Output);
 CmdArgs.push_back(SplitDWARFOut);
   }
 
@@ -6137,7 +6137,7 @@ void ClangAs::ConstructJob(Compilation &
   if ((getDebugFissionKind(D, Args, A) == DwarfFissionKind::Split) &&
   (T.isOSLinux() || T.isOSFuchsia())) {
 CmdArgs.push_back("-split-dwarf-file");
-CmdArgs.push_back(SplitDebugName(Args, Output));
+CmdArgs.push_back(SplitDebugName(Args, Input, Output));
   }
 
   assert(Input.isFilename() && "Invalid input.");

Modified: cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp?rev=357061&r1=357060&r2=357061&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp Wed Mar 27 04:00:03 2019
@@ -816,18 +816,26 @@ bool tools::areOptimizationsEnabled(cons
   return false;
 }
 
-const char *tools::SplitDebugName(const ArgList &Args,
+const char *tools::SplitDebugName(const ArgList &Args, const InputInfo &Input,
   const InputInfo &Output) {
-  SmallString<128> F(Output.isFilename()
- ? Output.getFilename()
- : llvm::sys::path::stem(Output.getBaseInput()));
-
   if (Arg *A = Args.getLastArg(options::OPT_gsplit_dwarf_EQ))
 if (StringRef(A->getValue()) == "single")
-  return Args.MakeArgString(F);
+  return Args.MakeArgString(Output.getFilename());
 
-  llvm::sys::path::replace_extension(F, "dwo");
-  return Args.MakeArgString(F);
+  Arg *FinalOutput = Args.getLastArg(options::OPT_o);
+  if (FinalOutput && Args.hasArg(options::OPT_c)) {
+SmallString<128> T(FinalOutput->getValue());
+llvm::sys::path::replace_extension(T, "dwo");
+return Args.MakeArgString(T);
+  } else {
+// Use the compilation dir.
+SmallString<128> T(
+Args.getLastArgValue(options::OPT_fdebug_compilation_dir));
+SmallString<128> F(llvm::sys::path::stem(Input.getBaseInput()));
+llvm::sys::path::replace_extension(F, "dwo");
+T += F;
+return Args.MakeArgString(F);
+  }
 }
 
 void tools::SplitDebugInfo(const ToolChain &TC, Compilation &C, const Tool &T,

Modified: cfe/trunk/lib/Driver/ToolChains/CommonArgs.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/CommonArgs.h?rev=357061&r1=357060&r2=357061&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains/CommonArgs.h (original)
+++ cfe/trunk/lib/Driver/ToolChains/CommonArgs.h Wed Mar 27 04:00:03 2019
@@ -62,7 +62,7 @@ void AddHIPLinkerScript(const ToolChain
 const Tool &T);
 
 const char *SplitDebugName(const llvm::opt::ArgList &Args,
-   const InputInfo &Output);
+   const InputInfo &Input, const InputInfo &Output);
 
 void SplitDebugInfo(const ToolChain &TC, Compilation &C, const Tool &T,
 const JobAction &JA, const llvm::opt::ArgList &Args,

Modified: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Gnu.cpp?rev=357061&r1=357060&r2=357061&view=diff
==
--- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp Wed Mar 27 04:00:03 2019
@@ -826,7 +826,7 @@ void tools::gnutools::Assembler::Constru
   if (Args.hasArg(options::OPT_gsplit_dwarf) &&
   getToolChain().getTriple().isOSLinux())
 SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output,
-   SplitDebugName(Args, Outpu

r368825 - [clang] - An update after LLVM change.

2019-08-14 Thread George Rimar via cfe-commits
Author: grimar
Date: Wed Aug 14 04:10:01 2019
New Revision: 368825

URL: http://llvm.org/viewvc/llvm-project?rev=368825&view=rev
Log:
[clang] - An update after LLVM change.

SectionRef::getName() was changed to return Expected<> (D66089)

Modified:
cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp
cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp

Modified: cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp?rev=368825&r1=368824&r2=368825&view=diff
==
--- cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp (original)
+++ cfe/trunk/lib/CodeGen/ObjectFilePCHContainerOperations.cpp Wed Aug 14 
04:10:01 2019
@@ -335,7 +335,11 @@ ObjectFilePCHContainerReader::ExtractPCH
 // Find the clang AST section in the container.
 for (auto &Section : OF->sections()) {
   StringRef Name;
-  Section.getName(Name);
+  if (Expected NameOrErr = Section.getName())
+Name = *NameOrErr;
+  else
+consumeError(NameOrErr.takeError());
+
   if ((!IsCOFF && Name == "__clangast") || (IsCOFF && Name == "clangast")) 
{
 if (Expected E = Section.getContents())
   return *E;

Modified: cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp?rev=368825&r1=368824&r2=368825&view=diff
==
--- cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp (original)
+++ cfe/trunk/tools/clang-offload-bundler/ClangOffloadBundler.cpp Wed Aug 14 
04:10:01 2019
@@ -390,7 +390,10 @@ class ObjectFileHandler final : public F
   static bool IsOffloadSection(SectionRef CurSection,
StringRef &OffloadTriple) {
 StringRef SectionName;
-CurSection.getName(SectionName);
+if (Expected NameOrErr = CurSection.getName())
+  SectionName = *NameOrErr;
+else
+  consumeError(NameOrErr.takeError());
 
 if (SectionName.empty())
   return false;


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r292227 - [Clang] - Update code to match upcoming llvm::zlib API.

2017-01-17 Thread George Rimar via cfe-commits
Author: grimar
Date: Tue Jan 17 09:45:31 2017
New Revision: 292227

URL: http://llvm.org/viewvc/llvm-project?rev=292227&view=rev
Log:
[Clang] - Update code to match upcoming llvm::zlib API.

D28684 changed llvm::zlib to return Error instead of Status.
It was accepted and committed in r292214, but then reverted in r292217
because I missed that clang code also needs to be updated.

Patch do that.

D28684 recommitted again as r292226

Differential revision: https://reviews.llvm.org/D28807

Modified:
cfe/trunk/lib/Serialization/ASTReader.cpp
cfe/trunk/lib/Serialization/ASTWriter.cpp

Modified: cfe/trunk/lib/Serialization/ASTReader.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=292227&r1=292226&r2=292227&view=diff
==
--- cfe/trunk/lib/Serialization/ASTReader.cpp (original)
+++ cfe/trunk/lib/Serialization/ASTReader.cpp Tue Jan 17 09:45:31 2017
@@ -72,6 +72,7 @@
 #include "llvm/Bitcode/BitstreamReader.h"
 #include "llvm/Support/Compression.h"
 #include "llvm/Support/Compiler.h"
+#include "llvm/Support/Error.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/MemoryBuffer.h"
@@ -1278,10 +1279,15 @@ bool ASTReader::ReadSLocEntry(int ID) {
 unsigned RecCode = SLocEntryCursor.readRecord(Code, Record, &Blob);
 
 if (RecCode == SM_SLOC_BUFFER_BLOB_COMPRESSED) {
+  if (!llvm::zlib::isAvailable()) {
+Error("zlib is not available");
+return nullptr;
+  }
   SmallString<0> Uncompressed;
-  if (llvm::zlib::uncompress(Blob, Uncompressed, Record[0]) !=
-  llvm::zlib::StatusOK) {
-Error("could not decompress embedded file contents");
+  if (llvm::Error E =
+  llvm::zlib::uncompress(Blob, Uncompressed, Record[0])) {
+Error("could not decompress embedded file contents: " +
+  llvm::toString(std::move(E)));
 return nullptr;
   }
   return llvm::MemoryBuffer::getMemBufferCopy(Uncompressed, Name);

Modified: cfe/trunk/lib/Serialization/ASTWriter.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriter.cpp?rev=292227&r1=292226&r2=292227&view=diff
==
--- cfe/trunk/lib/Serialization/ASTWriter.cpp (original)
+++ cfe/trunk/lib/Serialization/ASTWriter.cpp Tue Jan 17 09:45:31 2017
@@ -73,6 +73,7 @@
 #include "llvm/Support/Casting.h"
 #include "llvm/Support/Compression.h"
 #include "llvm/Support/EndianStream.h"
+#include "llvm/Support/Error.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/OnDiskHashTable.h"
@@ -1986,6 +1987,30 @@ void ASTWriter::WriteHeaderSearch(const
 free(const_cast(SavedStrings[I]));
 }
 
+static void emitBlob(llvm::BitstreamWriter &Stream, StringRef Blob,
+ unsigned SLocBufferBlobCompressedAbbrv,
+ unsigned SLocBufferBlobAbbrv) {
+  typedef ASTWriter::RecordData::value_type RecordDataType;
+
+  // Compress the buffer if possible. We expect that almost all PCM
+  // consumers will not want its contents.
+  SmallString<0> CompressedBuffer;
+  if (llvm::zlib::isAvailable()) {
+llvm::Error E = llvm::zlib::compress(Blob.drop_back(1), CompressedBuffer);
+if (!E) {
+  RecordDataType Record[] = {SM_SLOC_BUFFER_BLOB_COMPRESSED,
+ Blob.size() - 1};
+  Stream.EmitRecordWithBlob(SLocBufferBlobCompressedAbbrv, Record,
+CompressedBuffer);
+  return;
+}
+llvm::consumeError(std::move(E));
+  }
+
+  RecordDataType Record[] = {SM_SLOC_BUFFER_BLOB};
+  Stream.EmitRecordWithBlob(SLocBufferBlobAbbrv, Record, Blob);
+}
+
 /// \brief Writes the block containing the serialized form of the
 /// source manager.
 ///
@@ -2094,20 +2119,8 @@ void ASTWriter::WriteSourceManagerBlock(
 const llvm::MemoryBuffer *Buffer =
 Content->getBuffer(PP.getDiagnostics(), PP.getSourceManager());
 StringRef Blob(Buffer->getBufferStart(), Buffer->getBufferSize() + 1);
-
-// Compress the buffer if possible. We expect that almost all PCM
-// consumers will not want its contents.
-SmallString<0> CompressedBuffer;
-if (llvm::zlib::compress(Blob.drop_back(1), CompressedBuffer) ==
-llvm::zlib::StatusOK) {
-  RecordData::value_type Record[] = {SM_SLOC_BUFFER_BLOB_COMPRESSED,
- Blob.size() - 1};
-  Stream.EmitRecordWithBlob(SLocBufferBlobCompressedAbbrv, Record,
-CompressedBuffer);
-} else {
-  RecordData::value_type Record[] = {SM_SLOC_BUFFER_BLOB};
-  Stream.EmitRecordWithBlob(SLocBufferBlobAbbrv, Record, Blob);
-}
+emitBlob(Stream, Blob, SLocBufferBlobCompressedAbbrv,
+ 

r309088 - Update after LLVM change r309087

2017-07-26 Thread George Rimar via cfe-commits
Author: grimar
Date: Wed Jul 26 02:10:17 2017
New Revision: 309088

URL: http://llvm.org/viewvc/llvm-project?rev=309088&view=rev
Log:
Update after LLVM change r309087

Modified:
cfe/trunk/lib/Driver/Driver.cpp
cfe/trunk/lib/FrontendTool/ExecuteCompilerInvocation.cpp
cfe/trunk/tools/driver/cc1as_main.cpp

Modified: cfe/trunk/lib/Driver/Driver.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=309088&r1=309087&r2=309088&view=diff
==
--- cfe/trunk/lib/Driver/Driver.cpp (original)
+++ cfe/trunk/lib/Driver/Driver.cpp Wed Jul 26 02:10:17 2017
@@ -1124,7 +1124,8 @@ void Driver::PrintHelp(bool ShowHidden)
 ExcludedFlagsBitmask |= HelpHidden;
 
   getOpts().PrintHelp(llvm::outs(), Name.c_str(), DriverTitle.c_str(),
-  IncludedFlagsBitmask, ExcludedFlagsBitmask);
+  IncludedFlagsBitmask, ExcludedFlagsBitmask,
+  /*ShowAllAliases=*/false);
 }
 
 void Driver::PrintVersion(const Compilation &C, raw_ostream &OS) const {

Modified: cfe/trunk/lib/FrontendTool/ExecuteCompilerInvocation.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/FrontendTool/ExecuteCompilerInvocation.cpp?rev=309088&r1=309087&r2=309088&view=diff
==
--- cfe/trunk/lib/FrontendTool/ExecuteCompilerInvocation.cpp (original)
+++ cfe/trunk/lib/FrontendTool/ExecuteCompilerInvocation.cpp Wed Jul 26 
02:10:17 2017
@@ -179,7 +179,8 @@ bool clang::ExecuteCompilerInvocation(Co
 std::unique_ptr Opts = driver::createDriverOptTable();
 Opts->PrintHelp(llvm::outs(), "clang -cc1",
 "LLVM 'Clang' Compiler: http://clang.llvm.org";,
-/*Include=*/ driver::options::CC1Option, /*Exclude=*/ 0);
+/*Include=*/driver::options::CC1Option,
+/*Exclude=*/0, /*ShowAllAliases=*/false);
 return true;
   }
 

Modified: cfe/trunk/tools/driver/cc1as_main.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/cc1as_main.cpp?rev=309088&r1=309087&r2=309088&view=diff
==
--- cfe/trunk/tools/driver/cc1as_main.cpp (original)
+++ cfe/trunk/tools/driver/cc1as_main.cpp Wed Jul 26 02:10:17 2017
@@ -504,7 +504,8 @@ int cc1as_main(ArrayRef Ar
   if (Asm.ShowHelp) {
 std::unique_ptr Opts(driver::createDriverOptTable());
 Opts->PrintHelp(llvm::outs(), "clang -cc1as", "Clang Integrated Assembler",
-/*Include=*/driver::options::CC1AsOption, /*Exclude=*/0);
+/*Include=*/driver::options::CC1AsOption, /*Exclude=*/0,
+/*ShowAllAliases=*/false);
 return 0;
   }
 


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D13203: [Clang] - Massaging code to fix MSVS 2015 win32-release configuration

2015-09-28 Thread George Rimar via cfe-commits
grimar created this revision.
grimar added reviewers: rsmith, echristo.
grimar added subscribers: cfe-commits, grimar.

Microsoft Visual Studio Community 2015
Version 14.0.23107.0 D14REL

When building in release mode, MSVS failed with:

57>c:\access_softek\llvm\tools\clang\lib\ast\astcontext.cpp(334): fatal error 
C1001: An internal error has occurred in the compiler.
57>  (compiler file 'f:\dd\vctools\compiler\utc\src\p2\main.c', line 246)
57>   To work around this problem, try simplifying or changing the program near 
the locations listed above.

I little code simplification helped to workaround this.

http://reviews.llvm.org/D13203

Files:
  ASTContext.cpp

Index: ASTContext.cpp
===
--- ASTContext.cpp
+++ ASTContext.cpp
@@ -364,14 +364,14 @@
 } else {
   RC = getRawCommentForDeclNoCache(I);
   OriginalDeclForRC = I;
-  RawCommentAndCacheFlags Raw;
+  RedeclComments[I] = RawCommentAndCacheFlags();
+  RawCommentAndCacheFlags &Raw = RedeclComments[I];
   if (RC) {
 Raw.setRaw(RC);
 Raw.setKind(RawCommentAndCacheFlags::FromDecl);
   } else
 Raw.setKind(RawCommentAndCacheFlags::NoCommentInDecl);
   Raw.setOriginalDecl(I);
-  RedeclComments[I] = Raw;
   if (RC)
 break;
 }


Index: ASTContext.cpp
===
--- ASTContext.cpp
+++ ASTContext.cpp
@@ -364,14 +364,14 @@
 } else {
   RC = getRawCommentForDeclNoCache(I);
   OriginalDeclForRC = I;
-  RawCommentAndCacheFlags Raw;
+  RedeclComments[I] = RawCommentAndCacheFlags();
+  RawCommentAndCacheFlags &Raw = RedeclComments[I];
   if (RC) {
 Raw.setRaw(RC);
 Raw.setKind(RawCommentAndCacheFlags::FromDecl);
   } else
 Raw.setKind(RawCommentAndCacheFlags::NoCommentInDecl);
   Raw.setOriginalDecl(I);
-  RedeclComments[I] = Raw;
   if (RC)
 break;
 }
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D13203: [Clang] - Massaging code to fix MSVS 2015 win32-release configuration

2015-10-01 Thread George Rimar via cfe-commits
grimar updated this revision to Diff 36271.
grimar added a comment.

Added comment per review request.


http://reviews.llvm.org/D13203

Files:
  ASTContext.cpp

Index: ASTContext.cpp
===
--- ASTContext.cpp
+++ ASTContext.cpp
@@ -364,14 +364,19 @@
 } else {
   RC = getRawCommentForDeclNoCache(I);
   OriginalDeclForRC = I;
-  RawCommentAndCacheFlags Raw;
+  // TODO: these next two lines helps to workaround msvs 2015
+  // internal compiler error. This is a replacement
+  // of delayed assignment RedeclComments[I] = Raw
+  // which caused that issue.
+  RedeclComments[I] = RawCommentAndCacheFlags();
+  RawCommentAndCacheFlags &Raw = RedeclComments[I];
+  //
   if (RC) {
 Raw.setRaw(RC);
 Raw.setKind(RawCommentAndCacheFlags::FromDecl);
   } else
 Raw.setKind(RawCommentAndCacheFlags::NoCommentInDecl);
   Raw.setOriginalDecl(I);
-  RedeclComments[I] = Raw;
   if (RC)
 break;
 }


Index: ASTContext.cpp
===
--- ASTContext.cpp
+++ ASTContext.cpp
@@ -364,14 +364,19 @@
 } else {
   RC = getRawCommentForDeclNoCache(I);
   OriginalDeclForRC = I;
-  RawCommentAndCacheFlags Raw;
+  // TODO: these next two lines helps to workaround msvs 2015
+  // internal compiler error. This is a replacement
+  // of delayed assignment RedeclComments[I] = Raw
+  // which caused that issue.
+  RedeclComments[I] = RawCommentAndCacheFlags();
+  RawCommentAndCacheFlags &Raw = RedeclComments[I];
+  //
   if (RC) {
 Raw.setRaw(RC);
 Raw.setKind(RawCommentAndCacheFlags::FromDecl);
   } else
 Raw.setKind(RawCommentAndCacheFlags::NoCommentInDecl);
   Raw.setOriginalDecl(I);
-  RedeclComments[I] = Raw;
   if (RC)
 break;
 }
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D13203: [Clang] - Massaging code to fix MSVS 2015 win32-release configuration

2015-10-27 Thread George Rimar via cfe-commits
grimar abandoned this revision.
grimar added a comment.

r251415 fixes this in another way.


http://reviews.llvm.org/D13203



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r270985 - Update for following LLVM commit.

2016-05-27 Thread George Rimar via cfe-commits
Author: grimar
Date: Fri May 27 07:15:25 2016
New Revision: 270985

URL: http://llvm.org/viewvc/llvm-project?rev=270985&view=rev
Log:
Update for following LLVM commit.

It will be:
Recommit 270977 - [llvm-mc] - Teach llvm-mc to generate zlib styled compression 
sections.

Modified:
cfe/trunk/tools/driver/cc1as_main.cpp

Modified: cfe/trunk/tools/driver/cc1as_main.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/cc1as_main.cpp?rev=270985&r1=270984&r2=270985&view=diff
==
--- cfe/trunk/tools/driver/cc1as_main.cpp (original)
+++ cfe/trunk/tools/driver/cc1as_main.cpp Fri May 27 07:15:25 2016
@@ -313,7 +313,7 @@ static bool ExecuteAssembler(AssemblerIn
   // Ensure MCAsmInfo initialization occurs before any use, otherwise sections
   // may be created with a combination of default and explicit settings.
   if (Opts.CompressDebugSections)
-MAI->setCompressDebugSections(true);
+MAI->setCompressDebugSections(DebugCompressionType::DCT_ZlibGnu);
 
   bool IsBinary = Opts.OutputType == AssemblerInvocation::FT_Obj;
   std::unique_ptr FDOS = getOutputStream(Opts, Diags, 
IsBinary);


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits