History log of /llvm-project/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp (Results 126 – 150 of 180)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# bb1b2d09 16-Aug-2017 Eugene Zelenko <eugene.zelenko@gmail.com>

[Analysis] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC).

llvm-svn: 311048


Revision tags: llvmorg-5.0.0-rc2
# 75da10d1 04-Aug-2017 Charles Saternos <charles.saternos@gmail.com>

[ThinLTO] Add FunctionAttrs to ThinLTO index

Adds function attributes to index: ReadNone, ReadOnly, NoRecurse, NoAlias. This attributes will be used for future ThinLTO optimizations that will propag

[ThinLTO] Add FunctionAttrs to ThinLTO index

Adds function attributes to index: ReadNone, ReadOnly, NoRecurse, NoAlias. This attributes will be used for future ThinLTO optimizations that will propagate function attributes across modules.

llvm-svn: 310061

show more ...


Revision tags: llvmorg-5.0.0-rc1
# 64c46574 07-Jul-2017 Dehao Chen <dehao@google.com>

Increase the import-threshold for crtical functions.

Summary: For interative sample-pgo, if a hot call site is inlined in the profiling binary, we should inline it in before profile annotation in th

Increase the import-threshold for crtical functions.

Summary: For interative sample-pgo, if a hot call site is inlined in the profiling binary, we should inline it in before profile annotation in the backend. Before that, the compile phase first collects all GUIDs that needs to be imported and creates virtual "hot" call edge in the summary. However, "hot" is not good enough to guarantee the callsites get inlined. This patch introduces "critical" call edge, and assign much higher importing threshold for those edges.

Reviewers: tejohnson

Reviewed By: tejohnson

Subscribers: sanjoy, mehdi_amini, llvm-commits, eraman

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

llvm-svn: 307439

show more ...


Revision tags: llvmorg-4.0.1, llvmorg-4.0.1-rc3
# e357fbd2 08-Jun-2017 Peter Collingbourne <peter@pcc.me.uk>

Write summaries for merged modules when splitting modules for ThinLTO.

This is to prepare to allow for dead stripping of globals in the
merged modules.

Differential Revision: https://reviews.llvm.o

Write summaries for merged modules when splitting modules for ThinLTO.

This is to prepare to allow for dead stripping of globals in the
merged modules.

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

llvm-svn: 305027

show more ...


# 56584bbf 01-Jun-2017 Evgeniy Stepanov <eugeni.stepanov@gmail.com>

(NFC) Track global summary liveness in GVFlags.

Replace GVFlags::LiveRoot with GVFlags::Live and use that instead of
all the DeadSymbols sets. This is refactoring in order to make
liveness informati

(NFC) Track global summary liveness in GVFlags.

Replace GVFlags::LiveRoot with GVFlags::Live and use that instead of
all the DeadSymbols sets. This is refactoring in order to make
liveness information available in the RegularLTO pipeline.

llvm-svn: 304466

show more ...


Revision tags: llvmorg-4.0.1-rc2
# 94624aca 10-May-2017 Teresa Johnson <tejohnson@google.com>

Ensure non-null ProfileSummaryInfo passed to ModuleSummaryIndex builder

This fixes a ubsan bot failure after r302597, which made getProfileCount
non-static, but ended up invoking it on a null Profil

Ensure non-null ProfileSummaryInfo passed to ModuleSummaryIndex builder

This fixes a ubsan bot failure after r302597, which made getProfileCount
non-static, but ended up invoking it on a null ProfileSummaryInfo object
in some cases from buildModuleSummaryIndex.

Most testing passed because the non-static getProfileCount currently
doesn't access any member variables, but I found this when testing a
follow on patch (D32877) that adds a member variable access.

llvm-svn: 302705

show more ...


# f5f91600 09-May-2017 Easwaran Raman <eraman@google.com>

[ProfileSummary] Make getProfileCount a non-static member function.

This change is required because the notion of count is different for
sample profiling and getProfileCount will need to determine t

[ProfileSummary] Make getProfileCount a non-static member function.

This change is required because the notion of count is different for
sample profiling and getProfileCount will need to determine the
underlying profile type.

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

llvm-svn: 302597

show more ...


# 9667b91b 04-May-2017 Peter Collingbourne <peter@pcc.me.uk>

Re-apply r302108, "IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI."
with a fix for the clang backend.

llvm-svn: 302176


# f6039f25 04-May-2017 Eric Liu <ioeric@google.com>

Revert "IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI."

This reverts commit r302108. This causes crash in clang bootstrap with LTO.

Contacted the auther in the or

Revert "IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI."

This reverts commit r302108. This causes crash in clang bootstrap with LTO.

Contacted the auther in the original commit.

llvm-svn: 302140

show more ...


# 5f85a9de 04-May-2017 Peter Collingbourne <peter@pcc.me.uk>

IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI.

When profiling a no-op incremental link of Chromium I found that the functions
computeImportForFunction and computeD

IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI.

When profiling a no-op incremental link of Chromium I found that the functions
computeImportForFunction and computeDeadSymbols were consuming roughly 10% of
the profile. The goal of this change is to improve the performance of those
functions by changing the map lookups that they were previously doing into
pointer dereferences.

This is achieved by changing the ValueInfo data structure to be a pointer to
an element of the global value map owned by ModuleSummaryIndex, and changing
reference lists in the GlobalValueSummary to hold ValueInfos instead of GUIDs.
This means that a ValueInfo will take a client directly to the summary list
for a given GUID.

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

llvm-svn: 302108

show more ...


# e95901ca 03-May-2017 Peter Collingbourne <peter@pcc.me.uk>

Revert r295861, "[ModuleSummaryAnalysis] Don't crash when referencing unnamed globals."

We should always expect values to be named before running the module summary
analysis (see NameAnonGlobals pas

Revert r295861, "[ModuleSummaryAnalysis] Don't crash when referencing unnamed globals."

We should always expect values to be named before running the module summary
analysis (see NameAnonGlobals pass), so it's fine if we crash in that case.

llvm-svn: 301991

show more ...


Revision tags: llvmorg-4.0.1-rc1
# 61781ac2 31-Mar-2017 Peter Collingbourne <peter@pcc.me.uk>

ModuleSummaryAnalysis: Use a more precise #include. NFC.

llvm-svn: 299142


# 190f17ca 21-Mar-2017 Dehao Chen <dehao@google.com>

Use ProfileSummary:getProfileCount to get ScaledCount for ModuleSummary

Summary: ModuleSummary should use the standard interface of ProfileSummary::getProfileCount.

Reviewers: eraman, tejohnson

Re

Use ProfileSummary:getProfileCount to get ScaledCount for ModuleSummary

Summary: ModuleSummary should use the standard interface of ProfileSummary::getProfileCount.

Reviewers: eraman, tejohnson

Reviewed By: tejohnson

Subscribers: tejohnson, mehdi_amini, llvm-commits

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

llvm-svn: 298404

show more ...


# d8204472 09-Mar-2017 Teresa Johnson <tejohnson@google.com>

Perform symbol binding for .symver versioned symbols

Summary:
In a .symver assembler directive like:
.symver name, name2@@nodename
"name2@@nodename" should get the same symbol binding as "name".

Wh

Perform symbol binding for .symver versioned symbols

Summary:
In a .symver assembler directive like:
.symver name, name2@@nodename
"name2@@nodename" should get the same symbol binding as "name".

While the ELF object writer is updating the symbol binding for .symver
aliases before emitting the object file, not doing so when the module
inline assembly is handled by the RecordStreamer is causing the wrong
behavior in *LTO mode.

E.g. when "name" is global, "name2@@nodename" must also be marked as
global. Otherwise, the symbol is skipped when iterating over the LTO
InputFile symbols (InputFile::Symbol::shouldSkip). So, for example,
when performing any *LTO via the gold-plugin, the versioned symbol
definition is not recorded by the plugin and passed back to the
linker. If the object was in an archive, and there were no other symbols
needed from that object, the object would not be included in the final
link and references to the versioned symbol are undefined.

The llvm-lto2 tests added will give an error about an unused symbol
resolution without the fix.

Reviewers: rafael, pcc

Reviewed By: pcc

Subscribers: mehdi_amini, llvm-commits

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

llvm-svn: 297332

show more ...


Revision tags: llvmorg-4.0.0, llvmorg-4.0.0-rc4, llvmorg-4.0.0-rc3
# a60cdd38 28-Feb-2017 Dehao Chen <dehao@google.com>

Add function importing info from samplepgo profile to the module summary.

Summary: For SamplePGO, the profile may contain cross-module inline stacks. As we need to make sure the profile annotation h

Add function importing info from samplepgo profile to the module summary.

Summary: For SamplePGO, the profile may contain cross-module inline stacks. As we need to make sure the profile annotation happens when all the hot inline stacks are expanded, we need to pass this info to the module importer so that it can import proper functions if necessary. This patch implemented this feature by emitting cross-module targets as part of function entry metadata. In the module-summary phase, the metadata is used to build call edges that points to functions need to be imported.

Reviewers: mehdi_amini, tejohnson

Reviewed By: tejohnson

Subscribers: davidxl, llvm-commits

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

llvm-svn: 296498

show more ...


# e122d688 22-Feb-2017 Davide Italiano <davide@freebsd.org>

[ModuleSummaryAnalysis] Don't crash when referencing unnamed globals.

Instead, just be conservative as these are unfrequent enough. Thanks
to Peter Collingbourne for the discussion about this on IRC

[ModuleSummaryAnalysis] Don't crash when referencing unnamed globals.

Instead, just be conservative as these are unfrequent enough. Thanks
to Peter Collingbourne for the discussion about this on IRC.

llvm-svn: 295861

show more ...


# be9ffaac 10-Feb-2017 Peter Collingbourne <peter@pcc.me.uk>

IR: Function summary extensions for whole-program devirtualization pass.

The summary information includes all uses of llvm.type.test and
llvm.type.checked.load intrinsics that can be used to devirtu

IR: Function summary extensions for whole-program devirtualization pass.

The summary information includes all uses of llvm.type.test and
llvm.type.checked.load intrinsics that can be used to devirtualize calls,
including any constant arguments for virtual constant propagation.

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

llvm-svn: 294795

show more ...


Revision tags: llvmorg-4.0.0-rc2
# 1380edf4 03-Feb-2017 Mehdi Amini <mehdi.amini@apple.com>

Revert "[ThinLTO] Add an auto-hide feature"

This reverts commit r293970.

After more discussion, this belongs to the linker side and
there is no added value to do it at this level.

llvm-svn: 293993


# b0a8ff71 03-Feb-2017 Mehdi Amini <mehdi.amini@apple.com>

[ThinLTO] Add an auto-hide feature

When a symbol is not exported outside of the
DSO, it is can be hidden. Usually we try to internalize
as much as possible, but it is not always possible, for
instan

[ThinLTO] Add an auto-hide feature

When a symbol is not exported outside of the
DSO, it is can be hidden. Usually we try to internalize
as much as possible, but it is not always possible, for
instance a symbol can be referenced outside of the LTO
unit, or there can be cross-module reference in ThinLTO.

This is a recommit of r293912 after fixing build failures,
and a recommit of r293918 after fixing LLD tests.

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

llvm-svn: 293970

show more ...


# 21c89dc9 02-Feb-2017 Mehdi Amini <mehdi.amini@apple.com>

Revert "[ThinLTO] Add an auto-hide feature"

This reverts commit r293918, one lld test does not pass.

llvm-svn: 293961


# 97624fb1 02-Feb-2017 Mehdi Amini <mehdi.amini@apple.com>

[ThinLTO] Add an auto-hide feature

When a symbol is not exported outside of the
DSO, it is can be hidden. Usually we try to internalize
as much as possible, but it is not always possible, for
instan

[ThinLTO] Add an auto-hide feature

When a symbol is not exported outside of the
DSO, it is can be hidden. Usually we try to internalize
as much as possible, but it is not always possible, for
instance a symbol can be referenced outside of the LTO
unit, or there can be cross-module reference in ThinLTO.

This is a recommit of r293912 after fixing build failures.

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

llvm-svn: 293918

show more ...


# 827600de 02-Feb-2017 Mehdi Amini <mehdi.amini@apple.com>

Revert "[ThinLTO] Add an auto-hide feature"

This reverts r293912, bots are broken.

llvm-svn: 293914


# dc5a7444 02-Feb-2017 Mehdi Amini <mehdi.amini@apple.com>

[ThinLTO] Add an auto-hide feature

When a symbol is not exported outside of the
DSO, it is can be hidden. Usually we try to internalize
as much as possible, but it is not always possible, for
instan

[ThinLTO] Add an auto-hide feature

When a symbol is not exported outside of the
DSO, it is can be hidden. Usually we try to internalize
as much as possible, but it is not always possible, for
instance a symbol can be referenced outside of the LTO
unit, or there can be cross-module reference in ThinLTO.

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

llvm-svn: 293912

show more ...


# 8902948f 21-Jan-2017 Mehdi Amini <mehdi.amini@apple.com>

Add missing dependency to "Module Summary Analysis" pass

This is fixing a clang crash when running `clang -flto=thin -save-temps`

llvm-svn: 292711


Revision tags: llvmorg-4.0.0-rc1
# 6c475a75 05-Jan-2017 Teresa Johnson <tejohnson@google.com>

ThinLTO: add early "dead-stripping" on the Index

Summary:
Using the linker-supplied list of "preserved" symbols, we can compute
the list of "dead" symbols, i.e. the one that are not reachable from
a

ThinLTO: add early "dead-stripping" on the Index

Summary:
Using the linker-supplied list of "preserved" symbols, we can compute
the list of "dead" symbols, i.e. the one that are not reachable from
a "preserved" symbol transitively on the reference graph.
Right now we are using this information to mark these functions as
non-eligible for import.

The impact is two folds:
- Reduction of compile time: we don't import these functions anywhere
or import the function these symbols are calling.
- The limited number of import/export leads to better internalization.

Patch originally by Mehdi Amini.

Reviewers: mehdi_amini, pcc

Subscribers: llvm-commits

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

llvm-svn: 291177

show more ...


12345678