diff options
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/MC/MachO/cstexpr-gotpcrel-64.ll | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 098e7989e94..07d673190eb 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -957,7 +957,7 @@ static bool isGOTEquivalentCandidate(const GlobalVariable *GV, // To be a got equivalent, at least one of its users need to be a constant // expression used by another global variable. for (auto *U : GV->users()) - NumGOTEquivUsers += getNumGlobalVariableUses(cast<Constant>(U)); + NumGOTEquivUsers += getNumGlobalVariableUses(dyn_cast<Constant>(U)); return NumGOTEquivUsers > 0; } diff --git a/llvm/test/MC/MachO/cstexpr-gotpcrel-64.ll b/llvm/test/MC/MachO/cstexpr-gotpcrel-64.ll index c9c24ae3fda..bf155647f12 100644 --- a/llvm/test/MC/MachO/cstexpr-gotpcrel-64.ll +++ b/llvm/test/MC/MachO/cstexpr-gotpcrel-64.ll @@ -79,3 +79,8 @@ define i32 @t0(i32 %a) { to i32), %a ret i32 %x } + +; Also test direct instruction uses. +define i32** @t1() { + ret i32** @bargotequiv +} |

