https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119480
Bug ID: 119480 Summary: Wrong code generated in simple program that uses LLVM::map_to_vector Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: Mark_B53 at yahoo dot com Target Milestone: --- #include <llvm/ADT/SmallVectorExtras.h> int main() { int data[] = {1,2,3,4,5}; bool changed = false; auto fn = [&](int val) { changed = true; return val; }; auto out = llvm::map_to_vector(data, fn); return changed; } Program should print 1. However, on GCC 12.* and 13.* for -O1 & -O2, the output is 0. // Summary of Results // -O0 -O1/2 -O3 // 11.* pass pass pass // 12.* pass FAIL pass // 13.* pass FAIL pass // 14.* pass pass pass