Skip to content

MemorySanitizer false positive when using __builtin_convertvector #85876

Open
@philnik777

Description

@philnik777
template <class T>
using vec __attribute__((__ext_vector_type__(4))) = T;

void use(vec<bool> val) {}

int main() {
  auto val = vec<int>{0, 1, 2, 3};
  use(__builtin_convertvector(val, vec<bool>));
}

causes msan to fail with

==1==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x55d07d68881c in main /app/example.cpp:9:3
    #1 0x7f56abc29d8f  (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f) (BuildId: c289da5071a3399de893d2af81d6a30c62646e1e)
    #2 0x7f56abc29e3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e3f) (BuildId: c289da5071a3399de893d2af81d6a30c62646e1e)
    #3 0x55d07d5ee2f4 in _start (/app/output.s+0x322f4)

SUMMARY: MemorySanitizer: use-of-uninitialized-value /app/example.cpp:9:3 in main
Exiting

https://godbolt.org/z/TaeWE46Pq

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions