diff options
author | Bill Wendling <morbo@google.com> | 2020-01-07 12:53:44 -0800 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2020-01-07 13:40:26 -0800 |
commit | 52366088a8e42c2f1e96e8430b84b8b65ec3f7bc (patch) | |
tree | e8a2e167aa496592c70af28529ba313de1642575 /llvm/include | |
parent | 6652cc0cf7c0373b8af12f9e5b1a7065577a78da (diff) | |
download | bcm5719-llvm-52366088a8e42c2f1e96e8430b84b8b65ec3f7bc.tar.gz bcm5719-llvm-52366088a8e42c2f1e96e8430b84b8b65ec3f7bc.zip |
Allow output constraints on "asm goto"
Summary:
Remove the restrictions that preventing "asm goto" from returning non-void
values. The values returned by "asm goto" are only valid on the "fallthrough"
path.
Reviewers: jyknight, nickdesaulniers, hfinkel
Reviewed By: jyknight, nickdesaulniers
Subscribers: rsmith, hiraditya, llvm-commits, cfe-commits, craig.topper, rnk
Tags: #clang, #llvm
Differential Revision: https://reviews.llvm.org/D69876
Diffstat (limited to 'llvm/include')
-rw-r--r-- | llvm/include/llvm/CodeGen/MachineBasicBlock.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/include/llvm/CodeGen/MachineBasicBlock.h b/llvm/include/llvm/CodeGen/MachineBasicBlock.h index ccdde78a0b2..cbcd0b61ecb 100644 --- a/llvm/include/llvm/CodeGen/MachineBasicBlock.h +++ b/llvm/include/llvm/CodeGen/MachineBasicBlock.h @@ -129,6 +129,9 @@ private: /// Indicate that this basic block is the entry block of a cleanup funclet. bool IsCleanupFuncletEntry = false; + /// Indicate that this basic block is the indirect dest of an INLINEASM_BR. + bool IsInlineAsmBrIndirectPad = false; + /// since getSymbol is a relatively heavy-weight operation, the symbol /// is only computed once and is cached. mutable MCSymbol *CachedMCSymbol = nullptr; @@ -408,6 +411,12 @@ public: /// Indicates if this is the entry block of a cleanup funclet. void setIsCleanupFuncletEntry(bool V = true) { IsCleanupFuncletEntry = V; } + /// Returns true if this is the indirect dest of an INLINEASM_BR. + bool isInlineAsmBrIndirectPad() const { return IsInlineAsmBrIndirectPad; } + + /// Indicates if this is the indirect dest of an INLINEASM_BR. + void setIsInlineAsmBrIndirectPad(bool V = true) { IsInlineAsmBrIndirectPad = V; } + /// Returns true if it is legal to hoist instructions into this block. bool isLegalToHoistInto() const; |