You're trying to use a sequential IF statement outside of a process. It expects the keyword IF to be part of a generate scheme and generate statement.
(And no, you don't want to be using a generate statement). You want to steer data, not instantiations. If your 16 bit adder connections are correct it looks like you're only manipulating the carry chain. You don't need to duplicate the adders to do that.
This should give you the equivalent of your MODE selected operation, save there are no NULL assignments to CARRY_OUT, G_G and P_G:
begin
--Treat data as 32-bit unpacked
-- if(MODE = '1') then
sixteen_bit_cla0: entity sixteen_bit_cla port map(A=>A(15 downto 0),
B=>B(15 downto 0),
SUM=>SUM(15 downto 0),
CARRY_IN=>C(0),
P_G => P(0),
G_G => G(0));
sixteen_bit_cla1: entity sixteen_bit_cla port map(A=>A(31 downto 16),
B=>B(31 downto 16),
SUM=>SUM(31 downto 16),
CARRY_IN=>C(1),
P_G => P(1),
G_G => G(1));
C(0) <= CARRY_IN; -- both modes
C(1) <= G(0) or (P(0) and C(0)) when MODE = '1' else
CARRY_IN;
C(2) <= G(1) or (P(1) and C(1));
CARRY_OUT <= C(2) when MODE = '1' else
'0';
G_G<=C(2) when MODE = '1' else
'0';
P_G <= P(0) and P(1) when MODE = '1' else
'0';
--
-- --Treat data as 16-bit packed
-- elsif (MODE = '0') then
-- sixteen_bit_cla4: entity sixteen_bit_cla port map(A=>A(15 downto 0),
-- B=>B(15 downto 0),
-- SUM=>SUM(15 downto 0),
-- CARRY_IN=>CARRY_IN);
--
-- sixteen_bit_cla5: entity sixteen_bit_cla port map(A=>A(31 downto 16),
-- B=>B(31 downto 16),
-- SUM=>SUM(31 downto 16),
-- CARRY_IN=>CARRY_IN);
-- end if;
end structural;
I'm not going to stop and write sixteen_bit_cla and a testbench to verify it. Caveat Emptor.