[LLVMbugs] [Bug 16602] New: incorrect loop optimization at O2

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Jul 11 14:10:13 PDT 2013


            Bug ID: 16602
           Summary: incorrect loop  optimization at O2
           Product: clang
           Version: 3.2
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: LLVM Codegen
          Assignee: unassignedclangbugs at nondot.org
          Reporter: halayli at gmail.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

int x = 23;
int y = 29;

void* set_x(void* arg)
    x = 29;

    return NULL;

int main(void)

        pthread_t p1;

        pthread_create(&p1, NULL, set_x, NULL);
        while (x < y)
                if (x == y)

        return 0;

The following code runs forever if compiled with -O2.

clang -Wall -Wextra test.c -pthread -o test && ./test

The assembly code generated causes in infinite loop jumping to LBB1_1.

    .cfi_def_cfa_register %rbp
    subq    $16, %rsp
    leaq    -8(%rbp), %rdi
    xorl    %esi, %esi
    movl    $set_x, %edx
    xorl    %ecx, %ecx
    callq   pthread_create
    movq    -8(%rbp), %rdi
    callq   pthread_detach
    movl    x(%rip), %eax
    cmpl    y(%rip), %eax
    jge .LBB1_2
    .align  16, 0x90
.LBB1_1:                                # %while.cond
                                        # =>This Inner Loop Header: Depth=1
    jmp .LBB1_1

You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20130711/f11ede4b/attachment.html>

More information about the llvm-bugs mailing list