In some cases, like one bit data, a simple registering may be helpful.
in the example code below, iD is registered then used in if statement.
in unregistered version, the if statement may work incorrect,
in the unregistered version of iD, both of oQ1 and oQ2 may be Set.
Code:
process(iClk)
begin
if rising_edge(iCLk)then
sD <=iD;--removing metastability
oQ1 <='0';
oQ2 <='0';
if(sD='1') then
--if(iD='1') then--unregistered version
oQ1 <='1';
else
oQ2 <='1';
end if;
end if;--Clk Rising
end process;