https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82692

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |segher at gcc dot gnu.org
          Component|target                      |rtl-optimization

--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
This is the problem in the combine pass. It is substituting non-trapping
compare with trapping via SELECT_CC_MODE. This particular problem happens in
line 6788:

--cut here--
      /* If this machine has CC modes other than CCmode, check to see if we
         need to use a different CC mode here.  */
      if (GET_MODE_CLASS (GET_MODE (op0)) == MODE_CC)
        compare_mode = GET_MODE (op0);
      else if (inner_compare
               && GET_MODE_CLASS (GET_MODE (inner_compare)) == MODE_CC
               && new_code == old_code
               && op0 == XEXP (inner_compare, 0)
               && op1 == XEXP (inner_compare, 1))
        compare_mode = GET_MODE (inner_compare);
      else
        compare_mode = SELECT_CC_MODE (new_code, op0, op1);
--cut here--

New compare mode should NOT change trapping of the compare insn.

Reply via email to