[PATCH] Legalize SetCC needs logical NOT

Hal Finkel hfinkel at anl.gov
Mon May 12 15:38:45 PDT 2014


Peter,

Yep, this looks reasonable. Please also update the comment above SelectionDAGLegalize::LegalizeSetCCCondCode which currently reads (in part):

/// If the SETCC has been legalized using the inverse condcode, then LHS and
/// RHS will be unchanged, CC will set to the inverted condcode, and NeedInvert
/// will be set to true. The caller must invert the result of the SETCC with
/// SelectionDAG::getNOT() or take equivalent action to swap the effect of a
/// true/false result.

 -Hal

----- Original Message -----
> From: "Pete Cooper" <peter_cooper at apple.com>
> To: "llvm-commits" <llvm-commits at cs.uiuc.edu>
> Sent: Monday, May 12, 2014 5:25:14 PM
> Subject: [PATCH] Legalize SetCC needs logical NOT
> 
> 
> 
> Hi all
> 
> Please review this patch to use a logical not when inverting a SetCC.
> 
> The problem is that if I have something like
> 
> i8 = setcc
> 
> then using an xor with 0xFF will give the wrong answer when the
> boolean contents are ZeroOrOne.
> 
> Unfortunately I couldn’t find a single target which goes wrong here
> so I can’t generate a test case. Putting ‘llvm_unreachable’ in here
> just doesn’t hit, but hopefully its clear from the patch that
> there’s an obvious issue.
> 
> Thanks,
> Pete
> 
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory


More information about the llvm-commits mailing list