[llvm-bugs] [Bug 49942] New: Loading a vector of i1 loads the wrong value

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Apr 12 17:38:08 PDT 2021


https://bugs.llvm.org/show_bug.cgi?id=49942

            Bug ID: 49942
           Summary: Loading a vector of i1 loads the wrong value
           Product: libraries
           Version: 10.0
          Hardware: PC
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Core LLVM classes
          Assignee: unassignedbugs at nondot.org
          Reporter: malle at umich.edu
                CC: llvm-bugs at lists.llvm.org

This program:

```
@useFlag = private global <4 x i1> <i1 true, i1 true, i1 true, i1 true>


define i32 @get(i32 %arg)  {
    %ld = load <4 x i1>, <4 x i1>* @useFlag
    %zx = zext <4 x i1> %ld to <4 x i32>
    %ee = extractelement <4 x i32> %zx, i32 %arg
    ret i32 %ee
}

define i32 @main() {
  %g = call i32 @get(i32 2)
  ret i32 %g
}
```

will return 0.  I'd expect it to return 1 since it should load i1 true and then
zext that to i32 1.

Note that if you `get(i32 0)` then it returns 1 as expected.  Also, with -O3
this returns 1 correctly since the load is optimized out.

Tested with:

```
$ clang-10 --version
clang version 10.0.0
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```

Sorry if this is a duplicate! I found some related notes on lists.llvm.org, but
not a bug report.

-- 
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/20210413/a9751250/attachment.html>


More information about the llvm-bugs mailing list