[llvm] r276872 - GlobalISel: remove variable_ops from output list.

Quentin Colombet via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 12 18:57:47 PDT 2016


Hi Tim,

Can we fix MCInstrDesc to do the right thing instead?
The description of the instruction seems odd.

Cheers,
-Quentin
> On Jul 27, 2016, at 7:30 AM, Tim Northover via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> 
> Author: tnorthover
> Date: Wed Jul 27 09:30:49 2016
> New Revision: 276872
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=276872&view=rev
> Log:
> GlobalISel: remove variable_ops from output list.
> 
> The instance in the input operand list allows both inputs and outputs,
> but the one in (outs) is not treated specially which leads to the
> MachineVerifier invoking UB (looking at an invalid MCInstrDesc field).
> 
> No functional change except in UBSan builds (maybe, who knows!), where
> it fixes the legalize-add.mir test.
> 
> Modified:
>    llvm/trunk/include/llvm/Target/GenericOpcodes.td
> 
> Modified: llvm/trunk/include/llvm/Target/GenericOpcodes.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/GenericOpcodes.td?rev=276872&r1=276871&r2=276872&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Target/GenericOpcodes.td (original)
> +++ llvm/trunk/include/llvm/Target/GenericOpcodes.td Wed Jul 27 09:30:49 2016
> @@ -104,7 +104,7 @@ def G_STORE : Instruction {
> // indexes. This will almost certainly be mapped to sub-register COPYs after
> // register banks have been selected.
> def G_EXTRACT : Instruction {
> -  let OutOperandList = (outs variable_ops);
> +  let OutOperandList = (outs);
>   let InOperandList = (ins variable_ops);
>   let hasSideEffects = 0;
> }
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list