http://llvm.org/bugs/show_bug.cgi?id=3434

           Summary: Wrong x86 code generated
           Product: new-bugs
           Version: unspecified
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: normal
          Priority: P2
         Component: new bugs
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


This is LLVM 2.6svn, rev 63214, generating code for x86.

The code below together with the test program should print 8.
It does print if 8 if optimized (with opt -std-compile-opts),
but with the code straight from the source it prints 1.
Looking at the generated assembly code it looks like the second loop, the one
with the compare instructions, has an empty body.

Maybe there's something wrong with my code, but since it works with
optimization I don't think so.

C code:
-------
#include <stdio.h>

int _fun1(int);

main()
{
  printf("%d\n", _fun1(3));
}


LLVM code:
----------
define i32 @_fun1(i32) {
_L1:
        br label %_L2

_L2:
        %1 = phi i32 [ 0, %_L1 ], [ %6, %_L3 ]
        %2 = phi <4 x i32> [ undef, %_L1 ], [ %5, %_L3 ]
        %3 = icmp ne i32 %1, 4
        br i1 %3, label %_L3, label %_L4

_L3:
        %4 = extractelement <4 x i32> < i32 0, i32 1, i32 2, i32 3 >, i32 %1
        %5 = insertelement <4 x i32> %2, i32 %0, i32 %1
        %6 = add i32 %1, 1
        br label %_L2

_L4:
        br label %_L5

_L5:
        %7 = phi i32 [ 0, %_L4 ], [ %14, %_L6 ]
        %8 = phi <4 x i1> [ undef, %_L4 ], [ %13, %_L6 ]
        %9 = icmp ne i32 %7, 4
        br i1 %9, label %_L6, label %_L7

_L6:
        %10 = extractelement <4 x i32> < i32 0, i32 1, i32 2, i32 3 >, i32 %7
        %11 = extractelement <4 x i32> %2, i32 %7
        %12 = icmp eq i32 %10, %11
        %13 = insertelement <4 x i1> %8, i1 %12, i32 %7
        %14 = add i32 %7, 1
        br label %_L5

_L7:
        %15 = bitcast <4 x i1> %8 to i4
        %16 = zext i4 %15 to i32
        ret i32 %16
}


-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to