Commit Graph

195 Commits

Author SHA1 Message Date
Adam Nemet d81f643eb4 Handle/assert on DK_Remark
We don't generate remarks during inline assembly parsing so no need to handle
these for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@315643 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-12 23:56:54 +00:00
Zachary Turner 6c57331175 Revert "[ADT] Make Twine's copy constructor private."
This reverts commit 4e4ee1c507e2707bb3c208e1e1b6551c3015cbf5.

This is failing due to some code that isn't built on MSVC
so I didn't catch.  Not immediately obvious how to fix this
at first glance, so I'm reverting for now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@315536 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-11 23:54:34 +00:00
Zachary Turner 29b9ec05e6 [ADT] Make Twine's copy constructor private.
There's a lot of misuse of Twine scattered around LLVM.  This
ranges in severity from benign (returning a Twine from a function
by value that is just a string literal) to pretty sketchy (storing
a Twine by value in a class).  While there are some uses for
copying Twines, most of the very compelling ones are confined
to the Twine class implementation itself, and other uses are
either dubious or easily worked around.

This patch makes Twine's copy constructor private, and fixes up
all callsites.

Differential Revision: https://reviews.llvm.org/D38767

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@315530 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-11 23:33:06 +00:00
Adam Nemet eb5cf2772e Move verbosity check for opt remarks to the diag handler.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@314873 91177308-0d34-0410-b5e6-96231b3b80d8
2017-10-04 04:25:31 +00:00
Reid Kleckner 72f704f4e9 [Support] Rename tool_output_file to ToolOutputFile, NFC
This class isn't similar to anything from the STL, so it shouldn't use
the STL naming conventions.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@314050 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-23 01:03:17 +00:00
Adam Nemet 2351bad637 Add override for ClangDiagnosticHandler::isAnyRemarkEnabled()
This is used by the new closure-based variant of
OptimizationRemarkEmitter::emit().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@313693 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-19 23:00:59 +00:00
Adam Nemet a576fcd740 Fix ClangDiagnosticHandler::is*RemarkEnabled members
Apparently these weren't really working. I added test coverage and fixed the
typo in the name and the parameter.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@313653 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-19 17:59:40 +00:00
Vivek Pandya 88ada1a2d1 This patch fixes https://bugs.llvm.org/show_bug.cgi?id=32352 LLVM code change is as per https://reviews.llvm.org/D33514
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@313389 91177308-0d34-0410-b5e6-96231b3b80d8
2017-09-15 20:09:55 +00:00
Brian Gesiak 6ac9c51ede Un-revert "[Driver] Add -fdiagnostics-hotness-threshold"
Summary:
Un-revert https://reviews.llvm.org/D34868, but with a slight tweak to the
documentation to fix an error -- I had used the wrong syntax for a link.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@306948 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-01 05:45:26 +00:00
Brian Gesiak 315a27e4b8 Revert "[Driver] Add -fdiagnostics-hotness-threshold"
Summary:
The commit caused a documentation breakage.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@306946 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-01 04:54:53 +00:00
Brian Gesiak 65139b8e3f [Driver] Add -fdiagnostics-hotness-threshold
Summary:
Depends on https://reviews.llvm.org/D34867.

Add a Clang frontend option to enable optimization remark hotness
thresholds, which were added to LLVM in https://reviews.llvm.org/D34867.
This prevents diagnostics that do not meet a minimum hotness
threshold from being output. When generating optimization remarks for large
codebases with a ton of cold code paths, this option can be used
to limit the optimization remark output at a reasonable size.
Discussion of this change can be read here:
http://lists.llvm.org/pipermail/llvm-dev/2017-June/114377.html

Reviewers: anemet, davidxl, hfinkel

Reviewed By: anemet

Subscribers: fhahn, cfe-commits

Differential Revision: https://reviews.llvm.org/D34868

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@306945 91177308-0d34-0410-b5e6-96231b3b80d8
2017-07-01 04:44:38 +00:00
Brian Gesiak 77c1cc560f [ORE] Use LLVM's "diagnostics hotness" spelling
Summary:
Depends on https://reviews.llvm.org/D34864.

To unify Clang and LLVM's spelling of "diagnostic[s] hotness", use the
new "diagnostics hotness" spelling in LLVM, which was added in
https://reviews.llvm.org/D34864.

Reviewers: anemet, davidxl

Reviewed By: anemet

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D34865

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@306862 91177308-0d34-0410-b5e6-96231b3b80d8
2017-06-30 19:37:11 +00:00
Reid Kleckner 031053b045 Fix uninitialized bool read causing x86_64-mno-sse.c test failure
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@302854 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-12 00:10:49 +00:00
Richard Smith 92c5967c32 Refactor frontend InputKind to prepare for treating module maps as a distinct kind of input.
No functionality change intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301442 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-26 18:57:40 +00:00
Reid Kleckner 19f61736de Fix -Wunused-lambda-capture warning in new code
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@297681 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-13 22:33:07 +00:00
Jonas Devlieghere ec5dd34227 [Linker] Provide callback for internalization
Differential Revision: https://reviews.llvm.org/D30738

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@297649 91177308-0d34-0410-b5e6-96231b3b80d8
2017-03-13 18:08:11 +00:00
Justin Bogner fc92af3eab Rename DiagnosticInfoWithDebugLoc to WithLocation to match LLVM
Updates for llvm r295465.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@295466 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-17 17:34:49 +00:00
Amjad Aboud 05157f019a [DebugInfo] Added support to Clang FE for generating debug info for preprocessor macros.
Added "-fdebug-macro" flag (and "-fno-debug-macro" flag) to enable (and to disable) emitting macro debug info.
Added CC1 "-debug-info-macro" flag that enables emitting macro debug info.

Differential Revision: https://reviews.llvm.org/D16135

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@294637 91177308-0d34-0410-b5e6-96231b3b80d8
2017-02-09 22:07:24 +00:00
Peter Collingbourne d8ed0fb0a6 IRGen: When loading the main module in the distributed ThinLTO backend, look for the module containing the summary.
Differential Revision: https://reviews.llvm.org/D29067

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@293209 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-26 21:09:48 +00:00
Adam Nemet 694415162d Support MIR opt-remarks with -fsave-optimization-record
The handler that deals with IR passed/missed/analysis remarks is extended to
also handle the corresponding MIR remarks.

The more thorough testing in done via llc (rL293113, rL293121).  Here we just
make sure that the functionality is accessible through clang.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@293146 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-26 04:07:11 +00:00
Justin Lebar 771d6cd1ae [CodeGen] [CUDA] Add the ability set default attrs on functions in linked modules.
Summary:
Now when you ask clang to link in a bitcode module, you can tell it to
set attributes on that module's functions to match what we would have
set if we'd emitted those functions ourselves.

This is particularly important for fast-math attributes in CUDA
compilations.

Each CUDA compilation links in libdevice, a bitcode library provided by
nvidia as part of the CUDA distribution.  Without this patch, if we have
a user-function F that is compiled with -ffast-math that calls a
function G from libdevice, F will have the unsafe-fp-math=true (etc.)
attributes, but G will have no attributes.

Since F calls G, the inliner will merge G's attributes into F's.  It
considers the lack of an unsafe-fp-math=true attribute on G to be
tantamount to unsafe-fp-math=false, so it "merges" these by setting
unsafe-fp-math=false on F.

This then continues up the call graph, until every function that
(transitively) calls something in libdevice gets unsafe-fp-math=false
set, thus disabling fastmath in almost all CUDA code.

Reviewers: echristo

Subscribers: hfinkel, llvm-commits, mehdi_amini

Differential Revision: https://reviews.llvm.org/D28538

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@293097 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-25 21:29:48 +00:00
Peter Collingbourne 703ba991db IRGen: Factor out function CodeGenAction::loadModule. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292972 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-24 19:55:38 +00:00
Saleem Abdulrasool 72e537abaf CodeGen: plumb header search down to the IAS
inline assembly may use the `.include` directive to include other
content into the file.  Without the integrated assembler, the `-I` group
gets passed to the assembler.  Emulate this by collecting the header
search paths and passing them to the IAS.

Resolves PR24811!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@291123 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-05 16:02:32 +00:00
Reid Kleckner 03313c383f Fix -Winconsistent-missing-override in CodeGenAction.cpp
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@288227 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-30 01:32:53 +00:00
Reid Kleckner 1f0b0f907b Stop handling interesting deserialized decls after HandleTranslationUnit
Other AST consumers can deserialize interesting decls that we might
codegen, but they won't make it to the final object file and can trigger
assertions in debug information generation after finalization.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@288221 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-30 00:25:36 +00:00
Mehdi Amini b806c5ad66 Change setDiagnosticsOutputFile to take a unique_ptr from a raw pointer (NFC)
Summary:
This makes it explicit that ownership is taken. Also replace all `new`
with make_unique<> at call sites.

Reviewers: anemet

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D26884

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@287449 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-19 18:19:41 +00:00
Matthias Braun 6f60f84c11 Adapt to llvm NamedRegionTimer changes
We have to specify a name and description for the timers and groups now.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@287371 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-18 19:43:25 +00:00
Peter Collingbourne 264382d38b Bitcode: Change module reader functions to return an llvm::Expected.
Differential Revision: https://reviews.llvm.org/D26562

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@286752 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-13 07:00:17 +00:00
Teresa Johnson 980a461624 Mirror the llvm changes that split Bitcode/ReaderWriter.h
The change in D26502 splits ReaderWriter.h, which contains the APIs
into both the BitReader and BitWriter libraries, into BitcodeReader.h
and BitcodeWriter.h.

Change clang uses to the appropriate split header(s).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@286567 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-11 05:35:12 +00:00
Peter Collingbourne c5671c52da IR, Bitcode: Change bitcode reader to no longer own its memory buffer.
Unique ownership is just one possible ownership pattern for the memory buffer
underlying the bitcode reader. In practice, as this patch shows, ownership can
often reside at a higher level. With the upcoming change to allow multiple
modules in a single bitcode file, it will no longer be appropriate for
modules to generally have unique ownership of their memory buffer.

The C API exposes the ownership relation via the LLVMGetBitcodeModuleInContext
and LLVMGetBitcodeModuleInContext2 functions, so we still need some way for
the module to own the memory buffer. This patch does so by adding an owned
memory buffer field to Module, and using it in a few other places where it
is convenient.

Differential Revision: https://reviews.llvm.org/D26384

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@286214 91177308-0d34-0410-b5e6-96231b3b80d8
2016-11-08 06:03:43 +00:00
Hal Finkel 81b0670dcd Add an option to save the backend-produced YAML optimization record to a file
The backend now has the capability to save information from optimizations, the
same information that can be used to generate optimization diagnostics but in
machine-consumable form, into an output file. This can be enabled when using
opt (see r282539), and this change enables it when using clang. The idea is
that other tools will be able to consume these files, and perhaps in
combination with the original source code, produce various kinds of
optimization reports for users (and for compiler developers).

We now have at-least two tools that can consume these files:
  * tools/llvm-opt-report
  * utils/opt-viewer

Using the flag -fsave-optimization-record will cause the YAML file to be
generated; the file name will be based on the output file name (if we're using
-c or -S and have an output name), or the input file name. When we're using
CUDA, or some other offloading mechanism, separate files are generated for each
backend target. The output file name can be specified by the user using
-foptimization-record-file=filename.

Differential Revision: https://reviews.llvm.org/D25225

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@283834 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-11 00:26:09 +00:00
Mehdi Amini 587ba8167a Use StringRef in Pass/PassManager APIs (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@283004 91177308-0d34-0410-b5e6-96231b3b80d8
2016-10-01 02:56:57 +00:00
Adam Nemet c9b9480003 Shorten DiagnosticInfoOptimizationRemark* to OptimizationRemark*. NFC
With the new streaming interface in LLVM, these class names need to be
typed a lot and it's way too looong.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@282545 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-27 22:19:29 +00:00
Adam Nemet 9d6d8bd3df Adapt to LLVM optimization remark interface change. NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@282540 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-27 20:55:12 +00:00
Adam Nemet 709c3c4f68 Revert "Adapt to LLVM optimization remark interface change. NFC"
This reverts commit r282500.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@282504 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-27 16:39:27 +00:00
Adam Nemet c0898b9c31 Adapt to LLVM optimization remark interface change. NFC
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@282500 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-27 16:15:21 +00:00
Adam Nemet 8a7af2f320 Reapply r281276 with passing -emit-llvm in one of the tests
Original commit message:

Add -fdiagnostics-show-hotness

Summary:
I've recently added the ability for optimization remarks to include the
hotness of the corresponding code region.  This uses PGO and allows
filtering of the optimization remarks by relevance.  The idea was first
discussed here:
http://thread.gmane.org/gmane.comp.compilers.llvm.devel/98334

The general goal is to produce a YAML file with the remarks.  Then, an
external tool could dynamically filter these by hotness and perhaps by
other things.

That said it makes sense to also expose this at the more basic level
where we just include the hotness info with each optimization remark.
For example, in D22694, the clang flag was pretty useful to measure the
overhead of the additional analyses required to include hotness.
(Without the flag we don't even run the analyses.)

For the record, Hal has already expressed support for the idea of this
patch on IRC.

Differential Revision: https://reviews.llvm.org/D23284

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281293 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-13 04:32:40 +00:00
Adam Nemet 8503d6943b Revert "Add -fdiagnostics-show-hotness"
This reverts commit r281276.

Many bots are failing.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281279 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-13 00:16:49 +00:00
Adam Nemet fd2a481cd9 Add -fdiagnostics-show-hotness
Summary:
I've recently added the ability for optimization remarks to include the
hotness of the corresponding code region.  This uses PGO and allows
filtering of the optimization remarks by relevance.  The idea was first
discussed here:
http://thread.gmane.org/gmane.comp.compilers.llvm.devel/98334

The general goal is to produce a YAML file with the remarks.  Then, an
external tool could dynamically filter these by hotness and perhaps by
other things.

That said it makes sense to also expose this at the more basic level
where we just include the hotness info with each optimization remark.
For example, in D22694, the clang flag was pretty useful to measure the
overhead of the additional analyses required to include hotness.
(Without the flag we don't even run the analyses.)

For the record, Hal has already expressed support for the idea of this
patch on IRC.

Differential Revision: https://reviews.llvm.org/D23284

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@281276 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-12 23:48:16 +00:00
Davide Italiano 68dff7bced [CodeGen] Handle recursion in LLVMIRGeneration Timer.
This can happen when emitting a local decl, which triggers
loading a decl imported from an AST file, which we then
hand to the AST consumer. Timer is not allowed to recurse
so an assertion fire. Keep a reference counter to avoid this
problem. LGTM'd by Richard Smith on IRC.

Differential Revision:  https://reviews.llvm.org/D20748


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@276242 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-21 06:28:48 +00:00
Mehdi Amini 2e23251d3e [NFC] Header cleanup
Summary: Removed unused headers, replaced some headers with forward class declarations

Patch by: Eugene <claprix@yandex.ru>

Differential Revision: https://reviews.llvm.org/D20100

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@275882 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-18 19:02:11 +00:00
Peter Collingbourne f1bc23840f Frontend: Simplify ownership model for clang's output streams.
This changes the CompilerInstance::createOutputFile function to return
a std::unique_ptr<llvm::raw_ostream>, rather than an llvm::raw_ostream
implicitly owned by the CompilerInstance. This in most cases required that
I move ownership of the output stream to the relevant ASTConsumer.

The motivation for this change is to allow BackendConsumer to be a client
of interfaces such as D20268 which take ownership of the output stream.

Differential Revision: http://reviews.llvm.org/D21537

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@275507 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-15 00:55:40 +00:00
Adam Nemet 91071298a0 [Diag] Add getter shouldAlwaysPrint. NFC
For the new hotness attribute, the API will take the pass rather than
the pass name so we can no longer play the trick of AlwaysPrint being a
special pass name. This adds a getter to help the transition.

There is also a corresponding llvm patch.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@274101 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-29 04:55:31 +00:00
Matt Arsenault 55cabd9883 Update for DiagnosticInfoStackSize changes
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@273178 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-20 18:13:09 +00:00
Steven Wu 22dbcfe84e Embed bitcode in object file (clang cc1 part)
Summary:
Teach clang to embed bitcode inside bitcode. When -fembed-bitcode cc1
option is used, clang will embed both the input bitcode and cc1
commandline into the bitcode in special sections before compiling to
the object file.  Using -fembed-bitcode-marker will only introduce a
marker in both sections.

Depends on D17390

Reviewers: rsmith

Subscribers: yaron.keren, vsk, cfe-commits

Differential Revision: http://reviews.llvm.org/D17392

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@269202 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-11 16:26:03 +00:00
Ben Craig 192704bac1 Adding omitted column to invalid loc diagnostic.
note_fe_backend_invalid_loc expects three arguments (file, line, column), 
and will assert when only given two. The other two places in this file that
use note_fe_backend_invalid_loc already supply the Column for the third
parameter.

http://reviews.llvm.org/D19936


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@268732 91177308-0d34-0410-b5e6-96231b3b80d8
2016-05-06 13:29:46 +00:00
Teresa Johnson cf579820ee Enable ODR uniquing of DITypes for ThinLTO backends
Summary:
This is a follow-on to apply Duncan's new DIType ODR uniquing from
r266549 and r266713 in more places.

When invoking ThinLTO backend compiles via clang (for a distributed
build), invoke enableDebugTypeODRUniquing() before parsing the module.

Reviewers: dexonsmith, joker.eph

Subscribers: llvm-commits, joker.eph

Differential Revision: http://reviews.llvm.org/D19264

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@266852 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-20 02:23:52 +00:00
Tim Northover 733e42df1c Restore slightly less dodgy diagnostic handler for inline asm
Turns out it was there mostly to prevent Clang asking people to report a bug.
This time we report something to Clang's real diagnostics handler so that it
exits with something approximating a real error and tidies up after itself.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265592 91177308-0d34-0410-b5e6-96231b3b80d8
2016-04-06 19:58:07 +00:00
Tim Northover 362757ea7a Diagnostics: remove dodgy handler for bitcode inlineasm diagnostics.
Whatever crash it was there to present appears to have been fixed in the
backend now, and it had the nasty side-effect of causing clang to exit(0) and
leave a .o containing goodness knows what even when an error hit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@265038 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-31 19:19:24 +00:00
Stephan Bergmann 8d88a9262f For MS ABI, emit dllexport friend functions defined inline in class
...as that is apparently what MSVC does.  This is an updated version of r263738,
which had to be reverted in r263740 due to test failures.  The original version
had erroneously emitted functions that are defined in class templates, too (see
the updated "Handle friend functions" code in EmitDeferredDecls,
lib/CodeGen/ModuleBuilder.cpp).  (The updated tests needed to be split out into
their own dllexport-ms-friend.cpp because of the CHECK-NOTs which would have
interfered with subsequent CHECK-DAGs in dllexport.cpp.)

Differential Revision: http://reviews.llvm.org/D18430


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@264841 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-30 06:27:31 +00:00