CodeExtractor doesn't work with debugging metadata

Hi,

I've been experimenting with the CodeExtractor class and have been running into a problem where the verifier pass fails with the error "function-local metadata used in wrong function" when I compile with debugging symbols enabled (-g flag). The issue seems to be that after extraction we have metadata that references variables that aren't allocated in the extracted function. Example IR is below. Is this intentional or a bug?

Original IR
      define i32 @Fn() nounwind {
          %a = alloca i32, align 4
          ...
          call void @llvm.dbg.declare(metadata !{i32* %a}, metadata !15), !dbg !14
          %call = call i32 @Foo(), !dbg !14
          store i32 %call, i32* %a, align 4, !dbg !14

After Extraction
      define i32 @Fn() nounwind {
      entry:
          %a = alloca i32, align 4
          ...
          call void @extractedFn(i32* %a)

      define internal void @extractedFn(i32* %a) noinline {
      newFuncRoot:
          call void @llvm.dbg.declare(metadata !{i32* %a}, metadata !19), !dbg !14 ;; metadata now references variable not allocated in this function
          %call = call i32 @Foo(), !dbg !14
          store i32 %call, i32* %a, align 4, !dbg !14

Thanks,
Stuart Rudderham