1b8aae540SGreg Fitzgerald // RUN: %clangxx -fsanitize=undefined %s -o %t && %run %t 2>&1 | FileCheck %s
2ba869e79SAlexey Samsonov // Verify deduplication works by ensuring only one diag is emitted.
3ba869e79SAlexey Samsonov #include <limits.h>
4ba869e79SAlexey Samsonov #include <stdio.h>
5ba869e79SAlexey Samsonov 
overflow()6ba869e79SAlexey Samsonov void overflow() {
7ba869e79SAlexey Samsonov   int i = INT_MIN;
8ba869e79SAlexey Samsonov   --i;
9ba869e79SAlexey Samsonov }
10ba869e79SAlexey Samsonov 
main()11ba869e79SAlexey Samsonov int main() {
12ba869e79SAlexey Samsonov   // CHECK: Start
13ba869e79SAlexey Samsonov   fprintf(stderr, "Start\n");
14*a68d90faSPeter Collingbourne   fflush(stderr);
15ba869e79SAlexey Samsonov 
16ba869e79SAlexey Samsonov   // CHECK: runtime error
17ba869e79SAlexey Samsonov   // CHECK-NOT: runtime error
18ba869e79SAlexey Samsonov   // CHECK-NOT: runtime error
19ba869e79SAlexey Samsonov   overflow();
20ba869e79SAlexey Samsonov   overflow();
21ba869e79SAlexey Samsonov   overflow();
22ba869e79SAlexey Samsonov 
23ba869e79SAlexey Samsonov   // CHECK: End
24ba869e79SAlexey Samsonov   fprintf(stderr, "End\n");
25ba869e79SAlexey Samsonov   return 0;
26ba869e79SAlexey Samsonov }
27