message: [lldb] Refactor guard variable checks in IRForTarget
  Not NFC as this will probably fix a wrong guard variable check
  on Windows. Not sure though what Windows test can now be safely
  enabled.
diff: @@ -153,6 +153,12 @@ clang::NamedDecl *IRForTarget::DeclForGlobal(GlobalValue *global_val) {
  return DeclForGlobal(global_val, m_module);
  }
  +/// Returns true iff the mangled symbol is for a static guard variable.
  +static bool isGuardVariableSymbol(llvm::StringRef mangled_symbol) {
  + return mangled_symbol.startswith("_ZGV") || // Itanium ABI guard variable
  + mangled_symbol.startswith("@4IA"); // Microsoft ABI guard variable
  +}
  +
  bool IRForTarget::CreateResultVariable(llvm::Function &llvm_function) {
  lldb_private::Log *log(
  lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS));
  @@ -171,14 +177,14 @@ bool IRForTarget::CreateResultVariable(llvm::Function &llvm_function) {
  result_name = value_symbol.first();
  if (result_name.contains("$__lldb_expr_result_ptr") &&
  - !result_name.startswith("_ZGV")) {
  + !isGuardVariableSymbol(result_name)) {
  found_result = true;
  m_result_is_pointer = true;
  break;
  }
  if (result_name.contains("$__lldb_expr_result") &&
  - !result_name.startswith("_ZGV")) {
  + !isGuardVariableSymbol(result_name)) {
  found_result = true;
  m_result_is_pointer = false;
  break;
  @@ -1529,14 +1535,12 @@ bool IRForTarget::ResolveExternals(Function &llvm_function) {
  }
  static bool isGuardVariableRef(Value *V) {
  - Constant *Old = nullptr;
  + Constant *Old = dyn_cast<Constant>(V);
  - if (!(Old = dyn_cast<Constant>(V)))
  + if (!Old)
  return false;
  - ConstantExpr *CE = nullptr;
  -
  - if ((CE = dyn_cast<ConstantExpr>(V))) {
  + if (auto CE = dyn_cast<ConstantExpr>(V)) {
  if (CE->getOpcode() != Instruction::BitCast)
  return false;
  @@ -1545,12 +1549,8 @@ static bool isGuardVariableRef(Value *V) {
  GlobalVariable *GV = dyn_cast<GlobalVariable>(Old);
  - if (!GV || !GV->hasName() ||
  - (!GV->getName().startswith("_ZGV") && // Itanium ABI guard variable
  - !GV->getName().endswith("@4IA"))) // Microsoft ABI guard variable
  - {
  + if (!GV || !GV->hasName() || !isGuardVariableSymbol(GV->getName()))
  return false;
  - }
  return true;
  }
  