Index: llvm/lib/Analysis/CGSCCPassManager.cpp
===================================================================
--- llvm/lib/Analysis/CGSCCPassManager.cpp
+++ llvm/lib/Analysis/CGSCCPassManager.cpp
@@ -19,6 +19,7 @@
 #include "llvm/IR/Constant.h"
 #include "llvm/IR/InstIterator.h"
 #include "llvm/IR/Instruction.h"
+#include "llvm/IR/IntrinsicInst.h"
 #include "llvm/IR/PassManager.h"
 #include "llvm/IR/PassManagerImpl.h"
 #include "llvm/IR/ValueHandle.h"
@@ -392,6 +393,19 @@
               .first->second;
       for (Instruction &I : instructions(N.getFunction()))
         if (auto *CB = dyn_cast<CallBase>(&I)) {
+          // Filter out the intrinsic functions that cannot be the
+          // indirect-call target, especially those DbgInfoInstrinsic.
+          // This avoids different compilation behavior for the same source
+          // with and without -g option.
+          if (auto *II = dyn_cast<IntrinsicInst>(&I)) {
+            if (II->isAssumeLikeIntrinsic()) {
+              continue;
+            }
+            Intrinsic::ID ID = II->getIntrinsicID();
+            if (isDbgInfoIntrinsic(ID)) {
+              continue;
+            }
+          }
           if (CB->getCalledFunction()) {
             ++Count.Direct;
           } else {