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