From cb6d02fe32b756c9d3c124cb5abb7f52c35f335a Mon Sep 17 00:00:00 2001
From: Josh Berdine <jjb@fb.com>
Date: Mon, 20 May 2019 09:57:32 -0700
Subject: [PATCH] [sledge] Add Frontend.report_undefined

Summary:
Report undefined but used functions using
`sledge.dbg -tFrontend.report_undefined`.

Reviewed By: ngorogiannis

Differential Revision: D15403365

fbshipit-source-id: 9f0fd3283
---
 sledge/src/llair/frontend.ml | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/sledge/src/llair/frontend.ml b/sledge/src/llair/frontend.ml
index 1a9276840..fbbd16248 100644
--- a/sledge/src/llair/frontend.ml
+++ b/sledge/src/llair/frontend.ml
@@ -1289,6 +1289,10 @@ let xlate_block : pop_thunk -> x -> Llvm.llbasicblock -> Llair.block list =
   |>
   [%Trace.retn fun {pf} blocks -> pf "%s" (List.hd_exn blocks).Llair.lbl]
 
+let report_undefined func name =
+  if Option.is_some (Llvm.use_begin func) then
+    [%Trace.info "undefined function: %a" Global.pp name]
+
 let xlate_function : x -> Llvm.llvalue -> Llair.func =
  fun x llf ->
   [%Trace.call fun {pf} -> pf "%a" pp_llvalue llf]
@@ -1322,7 +1326,9 @@ let xlate_function : x -> Llvm.llvalue -> Llair.func =
         trav_blocks (List.rev entry_blocks) entry_blk
       in
       Llair.Func.mk ~name ~entry ~cfg
-  | At_end _ -> Llair.Func.mk_undefined ~name ~params )
+  | At_end _ ->
+      report_undefined llf name ;
+      Llair.Func.mk_undefined ~name ~params )
   |>
   [%Trace.retn fun {pf} -> pf "@\n%a" Llair.Func.pp]