FailedChanges

Summary

  1. [ThinLTO] Adding architecture name into saved object filename Summary: For ThinLTOCodegenerator, it has an option to save the object file outputs into a directory which is essential for debug info. Tools like lldb and dsymutil will look for these object files for debug info. On Darwin platform, you can link fat binaries with one single clang driver invocation like: $ clang -arch x86_64 -arch i386 -Wl,-object_path_lto,$TMPDIR ... Unfornately, the output object files for one architecture is going to overwrite the previous ones and one architecture slice will end up with no debug info. One example for this is to turn on ThinLTO for sanitizer dylibs in compiler-rt project. To fix the issue, add the name for the architecture into the name of the output object file. rdar://problem/35482935 Reviewers: tejohnson, bd1976llvm, dexonsmith, JDevlieghere Reviewed By: dexonsmith Subscribers: mehdi_amini, aprantl, inglorion, eraman, hiraditya, jkorous, dang, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D60924
Revision 359508 by steven_wu:
[ThinLTO] Adding architecture name into saved object filename

Summary:
For ThinLTOCodegenerator, it has an option to save the object file
outputs into a directory which is essential for debug info. Tools like lldb
and dsymutil will look for these object files for debug info.

On Darwin platform, you can link fat binaries with one single clang
driver invocation like:
$ clang -arch x86_64 -arch i386 -Wl,-object_path_lto,$TMPDIR ...
Unfornately, the output object files for one architecture is going to
overwrite the previous ones and one architecture slice will end up with
no debug info. One example for this is to turn on ThinLTO for sanitizer
dylibs in compiler-rt project.

To fix the issue, add the name for the architecture into the name of the
output object file.

rdar://problem/35482935

Reviewers: tejohnson, bd1976llvm, dexonsmith, JDevlieghere

Reviewed By: dexonsmith

Subscribers: mehdi_amini, aprantl, inglorion, eraman, hiraditya, jkorous, dang, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60924
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/LTO/legacy/ThinLTOCodeGenerator.htrunk/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h
The file was modified/llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpptrunk/lib/LTO/ThinLTOCodeGenerator.cpp
The file was modified/llvm/trunk/test/ThinLTO/X86/save_objects.lltrunk/test/ThinLTO/X86/save_objects.ll

Summary

  1. Simplify exclusion of nested classes from extern template instantiation, NFC Summary: This simplifies three checks for MS ABI, Win Itanium, or Win GNU to just "is Windows". The question remains, however, if this is really the correct thing to do. We could, for example, only not consider inner classes to be externally available if the outer class has a dllexport annotation. However, I will leave that as future work. Reviewers: hans, mstorsjo Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D61278
  2. When skipping code at the start of a file during PCH use, Preprocessor::Lex is not used since it consumes all preprocessor directives until it returns a real token. Using the specific Lexer (i.e. CurLexer->Lex) makes it possible to stop skipping after an #include or #pragma hdrstop. Previously the skipping code was only handling CurLexer, now all will be handled correctly. Fixes: llvm.org/PR41585 Differential Revision: https://reviews.llvm.org/D61217
Revision 359507 by rnk:
Simplify exclusion of nested classes from extern template instantiation, NFC

Summary:
This simplifies three checks for MS ABI, Win Itanium, or Win GNU to just
"is Windows".

The question remains, however, if this is really the correct thing to
do. We could, for example, only not consider inner classes to be
externally available if the outer class has a dllexport annotation.
However, I will leave that as future work.

Reviewers: hans, mstorsjo

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D61278
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpptrunk/lib/Sema/SemaTemplateInstantiate.cpp
Revision 359506 by mikerice:
When skipping code at the start of a file during PCH use, Preprocessor::Lex
is not used since it consumes all preprocessor directives until it returns
a real token. Using the specific Lexer (i.e. CurLexer->Lex) makes it
possible to stop skipping after an #include or #pragma hdrstop. Previously
the skipping code was only handling CurLexer, now all will be handled
correctly.

Fixes: llvm.org/PR41585

Differential Revision: https://reviews.llvm.org/D61217
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Lex/Preprocessor.cpptrunk/lib/Lex/Preprocessor.cpp
The file was added/cfe/trunk/test/PCH/Inputs/pch-through-macro.htrunk/test/PCH/Inputs/pch-through-macro.h
The file was added/cfe/trunk/test/PCH/pch-through4.cpptrunk/test/PCH/pch-through4.cpp
The file was added/cfe/trunk/test/PCH/pch-through4a.cpptrunk/test/PCH/pch-through4a.cpp