Issue 137164
Summary SLPVectorizer crash with hardened libc++
Labels libc++
Assignees alexey-bataev
Reporter alexfh
    Clang built with hardened libc++ (`-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG`) crashes on a number of inputs in our codebase. 

Input reduced from https://github.com/unicode-org/icu/blob/main/icu4c/source/i18n/gregocal.cpp:
```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define void @_ZN6icu_7717GregorianCalendar19handleComputeFieldsEiR10UErrorCode(i32 %julianDay, i1 %cmp) {
entry:
  br i1 %cmp, label %if.then2, label %if.end33

if.then2:                                         ; preds = %entry
  %call3 = call i32 @_ZNK6icu_778Calendar17getGregorianMonthEv()
 %call4 = call i32 @_ZNK6icu_778Calendar22getGregorianDayOfMonthEv()
  %call5 = call i32 @_ZNK6icu_778Calendar21getGregorianDayOfYearEv()
  br label %if.end33

if.end33:                                         ; preds = %if.then2, %entry
  %month.0 = phi i32 [ %call3, %if.then2 ], [ 0, %entry ]
  %dayOfMonth.0 = phi i32 [ %call4, %if.then2 ], [ %julianDay, %entry ]
 %dayOfYear.0 = phi i32 [ %call5, %if.then2 ], [ 0, %entry ]
  store volatile i32 %month.0, ptr null, align 4
  store volatile i32 %dayOfMonth.0, ptr null, align 4
  store volatile i32 %dayOfYear.0, ptr null, align 4
  ret void
}

define i32 @_ZNK6icu_778Calendar17getGregorianMonthEv() {
entry:
  %0 = load i8, ptr inttoptr (i64 168 to ptr), align 8
  %conv = sext i8 %0 to i32
  ret i32 %conv
}

define i32 @_ZNK6icu_778Calendar22getGregorianDayOfMonthEv() {
entry:
  %0 = load i8, ptr inttoptr (i64 169 to ptr), align 1
  %conv = sext i8 %0 to i32
  ret i32 %conv
}

define i32 @_ZNK6icu_778Calendar21getGregorianDayOfYearEv() {
entry:
  %0 = load i16, ptr inttoptr (i64 170 to ptr), align 2
  %conv = sext i16 %0 to i32
  ret i32 %conv
}
```
(also [on compiler explorer](https://gcc.godbolt.org/z/n8j5jEEns) for convenience, but there's no crash, since libc++ assertions are necessary to reproduce this)
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to