https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81763
--- Comment #43 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Uroš Bizjak from comment #41) > Let's go forward with this pattern: > > (define_insn "*andndi3_doubleword" > [(set (match_operand:DI 0 "register_operand" "=&r,r,r,&r") > (and:DI > (not:DI (match_operand:DI 1 "register_operand" "r,0,r,0")) > (match_operand:DI 2 "nonimmediate_operand" "rm,rm,0,rm"))) > (clobber (reg:CC FLAGS_REG))] > "!TARGET_64BIT && TARGET_STV && TARGET_SSE2" > "#" > [(set_attr "isa" "bmi,bmi,bmi,*")]) This looks reasonable to me. (In reply to Mike Lothian from comment #42) > With the patch in Comment 36 I get the following error compiling Clang Just out of interest, could you attach the preprocessed source here, I'd like to see the case when the RA assigns such a partial overlap. As you're using -march=native, will need g++ output with -v added to the command too (what flags it expands to).