diff options
| author | Heejin Ahn <aheejin@gmail.com> | 2018-05-17 20:52:03 +0000 | 
|---|---|---|
| committer | Heejin Ahn <aheejin@gmail.com> | 2018-05-17 20:52:03 +0000 | 
| commit | b4be38fcdd219d4d2c70776d6279c18e532572f8 (patch) | |
| tree | d1cf851b7ffacf329e888453bc28ce0eb0fa4395 /llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp | |
| parent | ecb3e50041d15de76af12a8fbb4d118e8f85a8c0 (diff) | |
| download | bcm5719-llvm-b4be38fcdd219d4d2c70776d6279c18e532572f8.tar.gz bcm5719-llvm-b4be38fcdd219d4d2c70776d6279c18e532572f8.zip | |
[WebAssembly] Add Wasm personality and isScopedEHPersonality()
Summary:
- Add wasm personality function
- Re-categorize the existing `isFuncletEHPersonality()` function into
two different functions: `isFuncletEHPersonality()` and
`isScopedEHPersonality(). This becomes necessary as wasm EH uses scoped
EH instructions (catchswitch, catchpad/ret, and cleanuppad/ret) but not
outlined funclets.
- Changed some callsites of `isFuncletEHPersonality()` to
`isScopedEHPersonality()` if they are related to scoped EH IR-level
stuff.
Reviewers: majnemer, dschuff, rnk
Subscribers: jfb, sbc100, jgravelle-google, eraman, JDevlieghere, sunfish, llvm-commits
Differential Revision: https://reviews.llvm.org/D45559
llvm-svn: 332667
Diffstat (limited to 'llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp')
| -rw-r--r-- | llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp | 12 | 
1 files changed, 6 insertions, 6 deletions
| diff --git a/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp b/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp index c8eb680bbdf..5e05aab7716 100644 --- a/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp +++ b/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp @@ -504,11 +504,11 @@ static bool functionHasLines(Function &F) {    return false;  } -static bool isUsingFuncletBasedEH(Function &F) { +static bool isUsingScopeBasedEH(Function &F) {    if (!F.hasPersonalityFn()) return false;    EHPersonality Personality = classifyEHPersonality(F.getPersonalityFn()); -  return isFuncletEHPersonality(Personality); +  return isScopedEHPersonality(Personality);  }  static bool shouldKeepInEntry(BasicBlock::iterator It) { @@ -551,8 +551,8 @@ void GCOVProfiler::emitProfileNotes() {        DISubprogram *SP = F.getSubprogram();        if (!SP) continue;        if (!functionHasLines(F)) continue; -      // TODO: Functions using funclet-based EH are currently not supported. -      if (isUsingFuncletBasedEH(F)) continue; +      // TODO: Functions using scope-based EH are currently not supported. +      if (isUsingScopeBasedEH(F)) continue;        // gcov expects every function to start with an entry block that has a        // single successor, so split the entry block to make sure of that. @@ -630,8 +630,8 @@ bool GCOVProfiler::emitProfileArcs() {        DISubprogram *SP = F.getSubprogram();        if (!SP) continue;        if (!functionHasLines(F)) continue; -      // TODO: Functions using funclet-based EH are currently not supported. -      if (isUsingFuncletBasedEH(F)) continue; +      // TODO: Functions using scope-based EH are currently not supported. +      if (isUsingScopeBasedEH(F)) continue;        if (!Result) Result = true;        unsigned Edges = 0; | 

