diff --git a/src/exception_test.cc b/src/exception_test.cc
index 120f16a..877f1c3 100644
--- a/src/exception_test.cc
+++ b/src/exception_test.cc
@@ -118,6 +118,7 @@
   ASSERT_EQ(kStackAlignment, 16);
   ASSERT_EQ(sizeof(uintptr_t), sizeof(uint32_t));
 
+#if !defined(ART_USE_LLVM_COMPILER)
   // Create two fake stack frames with mapping data created in SetUp. We map offset 3 in the code
   // to dex pc 3, however, we set the return pc to 5 as the stack walker always subtracts two
   // from a return pc.
@@ -141,6 +142,25 @@
   // Set up thread to appear as if we called out of method_g_ at pc 3
   Thread* thread = Thread::Current();
   thread->SetTopOfStack(&fake_stack[0], reinterpret_cast<uintptr_t>(method_g_->GetCode()) + pc_offset);  // return pc
+#else
+  // Create/push fake 20-byte shadow frame for method g
+  fake_stack.push_back(0);
+  fake_stack.push_back(0);
+  fake_stack.push_back(reinterpret_cast<uintptr_t>(method_g_));
+  fake_stack.push_back(37);
+  fake_stack.push_back(0);
+
+  // Create/push fake 20-byte shadow frame for method f
+  fake_stack.push_back(0);
+  fake_stack.push_back(0);
+  fake_stack.push_back(reinterpret_cast<uintptr_t>(method_f_));
+  fake_stack.push_back(22);
+  fake_stack.push_back(0);
+
+  Thread* thread = Thread::Current();
+  thread->PushShadowFrame(reinterpret_cast<ShadowFrame*>(&fake_stack[5]));
+  thread->PushShadowFrame(reinterpret_cast<ShadowFrame*>(&fake_stack[0]));
+#endif
 
   JNIEnv* env = thread->GetJniEnv();
   jobject internal = thread->CreateInternalStackTrace(env);
diff --git a/src/shadow_frame.h b/src/shadow_frame.h
index c5b6492..9a02a58 100644
--- a/src/shadow_frame.h
+++ b/src/shadow_frame.h
@@ -31,6 +31,11 @@
     return number_of_references_;
   }
 
+  // Caller line number
+  uint32_t GetLineNumber() const {
+    return line_num_;
+  }
+
   // Link to previous shadow frame or NULL
   ShadowFrame* GetLink() const {
     return link_;
diff --git a/src/thread.cc b/src/thread.cc
index ae460e4..1f1952d 100644
--- a/src/thread.cc
+++ b/src/thread.cc
@@ -1384,7 +1384,7 @@
     Frame frame;
     frame.SetSP(reinterpret_cast<Method**>(reinterpret_cast<byte*>(cur) +
                                            ShadowFrame::MethodOffset()));
-    bool should_continue = visitor->VisitFrame(frame, 0);
+    bool should_continue = visitor->VisitFrame(frame, cur->GetLineNumber());
     if (!should_continue) {
       return;
     }
@@ -1490,7 +1490,11 @@
     Method* method = down_cast<Method*>(method_trace->Get(i));
     mh.ChangeMethod(method);
     uint32_t native_pc = pc_trace->Get(i);
+#if !defined(ART_USE_LLVM_COMPILER)
     int32_t line_number = mh.GetLineNumFromNativePC(native_pc);
+#else
+    int32_t line_number = native_pc; // LLVM stored line_number in the ShadowFrame
+#endif
     // Allocate element, potentially triggering GC
     // TODO: reuse class_name_object via Class::name_?
     const char* descriptor = mh.GetDeclaringClassDescriptor();
