llvm-project/clang/test/Frontend/highlight-text.c
Alexander Kornienko 374fffe015
Fix out-of-bounds access to std::unique_ptr<T[]> (#111581)
This manifested as an assertion failure in Clang built against libc++
with
hardening enabled (e.g.
-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG):
`libcxx/include/__memory/unique_ptr.h:596: assertion
__checker_.__in_bounds(std::__to_address(__ptr_), __i) failed:
unique_ptr<T[]>::operator[](index): index out of range`
2024-10-09 14:15:06 +02:00

28 lines
938 B
C

// RUN: %clang_cc1 -fsyntax-only %s 2> %t
// RUN: FileCheck < %t %s
#define F (1 << 99)
#define M \
F | F
int a = M;
// CHECK: :8:9: warning: shift count >= width of type [-Wshift-count-overflow]
// CHECK-NEXT: 8 | int a = M;
// CHECK-NEXT: | ^
// CHECK-NEXT: :5:11: note: expanded from macro 'M'
// CHECK-NEXT: 5 | #define M \
// CHECK-NEXT: | ^
// CHECK-NEXT: :3:14: note: expanded from macro '\
// CHECK-NEXT: F'
// CHECK-NEXT: 3 | #define F (1 << 99)
// CHECK-NEXT: | ^ ~~
// CHECK-NEXT: :8:9: warning: shift count >= width of type [-Wshift-count-overflow]
// CHECK-NEXT: 8 | int a = M;
// CHECK-NEXT: | ^
// CHECK-NEXT: :6:5: note: expanded from macro 'M'
// CHECK-NEXT: 6 | F | F
// CHECK-NEXT: | ^
// CHECK-NEXT: :3:14: note: expanded from macro 'F'
// CHECK-NEXT: 3 | #define F (1 << 99)
// CHECK-NEXT: | ^ ~~