From 12fb8f60d64266851749bf34eb94ad6881980c3e Mon Sep 17 00:00:00 2001 From: fengleizZZ Date: Sat, 19 Oct 2024 22:55:00 +0800 Subject: [PATCH] [ADT] Fix ArrayRef::slice Current implementation of `slice(N)` is buggy, since `slice(N, size() - N)` will never fail the assertion `assert(N+M <= size() && "Invalid specifier")` above, even `N > size()`. --- llvm/include/llvm/ADT/ArrayRef.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/include/llvm/ADT/ArrayRef.h b/llvm/include/llvm/ADT/ArrayRef.h index ac40ec4a6b240..d9897320ce091 100644 --- a/llvm/include/llvm/ADT/ArrayRef.h +++ b/llvm/include/llvm/ADT/ArrayRef.h @@ -198,7 +198,7 @@ namespace llvm { } /// slice(n) - Chop off the first N elements of the array. - ArrayRef slice(size_t N) const { return slice(N, size() - N); } + ArrayRef slice(size_t N) const { return drop_front(N); } /// Drop the first \p N elements of the array. ArrayRef drop_front(size_t N = 1) const {