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

--- Comment #58 from EML <elowe at elowe dot com> ---
32 Bit:

Second Test Program (derived from a crashing conftest)

#include <ctype.h>

int
main ()
{
  int j = 0;

  j = islower(0);

  printf("j is: %d\n", j);

  return 0;
}

<snip>
[.LCFI2:]
        mov r35 = r1
        .body
        .loc 1 6 7
        ;;
        st4 [r34] = r0
        .loc 1 8 18
        addl r14 = @ltoffx(__SB_masks#), r1
        ;;
        ld8.mov r14 = [r14], __SB_masks#
        ;;
        ld4 r14 = [r14]
        .loc 1 8 16
        ;;
        cmp.eq p6, p7 = 0, r14
        (p6) br.cond.dptk .L2
        .loc 1 8 35 discriminator 1
        addl r14 = @ltoffx(__SB_masks#), r1
        ;;
        ld8.mov r14 = [r14], __SB_masks#
        ;;
        ld4 r14 = [r14]
        ;;
        ld4 r14 = [r14] <<<--- crashes here. Missing addp4 r14 = 0,r14
        .loc 1 8 16 discriminator 1
        ;;
        and r14 = 64, r14
        br .L3
        ;;
<snip>

If you insert the addp4 r14 = 0,r14 before that command (like gcc 4.9.3 does),
the program compiles and runs correctly

I'll upload the .s for "IsLower.c" - it's definitely a 32 bit executable, so
the correct options are being passed around.

Reply via email to