Custom backend, unsure about error

Currently writing a custom backend to add to the main LLVM tree and am
having trouble understanding what this error is trying to tell me.

# Machine code for function main: NoPHIs, TracksLiveness
Frame Objects:
  fi#0: size=1, align=1, at location [SP+2]

0B %bb.0: derived from LLVM BB %entry
16B %1:baselinereg = COPY %0; BaselineReg:%1 WREG:%0
32B %0:wreg = Baseline_MOVF_W killed %1, implicit-def dead
%status; WREG:%0 BaselineReg:%1
48B %3:baselinereg = COPY %2; BaselineReg:%3 WREG:%2
64B %2:wreg = Baseline_MOVF_W killed %3, implicit-def dead
%status; WREG:%2 BaselineReg:%3
80B Baseline_MOVLW killed %2, killed %0, implicit-def dead
%status; mem:ST1[%a] WREG:%2,%0

# End machine code for function main.

Use of %0 does not have a corresponding definition on every path:
16r %1:baselinereg = COPY %0; BaselineReg:%1 WREG:%0
LLVM ERROR: Use not jointly dominated by defs.

Any help would be appreciated.

Cheers, Evan

A virtual register must be defined (by some instruction) on each path from the entry to the point of use. This must be true for each use (non-undef) of any virtual register. In your case, the first instruction (COPY) uses %0, which has not been defined.

-Krzysztof