12af552f98f980178db37eed28a609b6bf55f6df8Will Dietz// RUN: %clang -fsanitize=undefined %s -o %t && %t 2>&1 | FileCheck %s
22af552f98f980178db37eed28a609b6bf55f6df8Will Dietz// Verify deduplication works by ensuring only one diag is emitted.
32af552f98f980178db37eed28a609b6bf55f6df8Will Dietz#include <limits.h>
42af552f98f980178db37eed28a609b6bf55f6df8Will Dietz#include <stdio.h>
52af552f98f980178db37eed28a609b6bf55f6df8Will Dietz
62af552f98f980178db37eed28a609b6bf55f6df8Will Dietzvoid overflow() {
72af552f98f980178db37eed28a609b6bf55f6df8Will Dietz  int i = INT_MIN;
82af552f98f980178db37eed28a609b6bf55f6df8Will Dietz  --i;
92af552f98f980178db37eed28a609b6bf55f6df8Will Dietz}
102af552f98f980178db37eed28a609b6bf55f6df8Will Dietz
112af552f98f980178db37eed28a609b6bf55f6df8Will Dietzint main() {
122af552f98f980178db37eed28a609b6bf55f6df8Will Dietz  // CHECK: Start
132af552f98f980178db37eed28a609b6bf55f6df8Will Dietz  fprintf(stderr, "Start\n");
142af552f98f980178db37eed28a609b6bf55f6df8Will Dietz
152af552f98f980178db37eed28a609b6bf55f6df8Will Dietz  // CHECK: runtime error
162af552f98f980178db37eed28a609b6bf55f6df8Will Dietz  // CHECK-NOT: runtime error
172af552f98f980178db37eed28a609b6bf55f6df8Will Dietz  // CHECK-NOT: runtime error
182af552f98f980178db37eed28a609b6bf55f6df8Will Dietz  overflow();
192af552f98f980178db37eed28a609b6bf55f6df8Will Dietz  overflow();
202af552f98f980178db37eed28a609b6bf55f6df8Will Dietz  overflow();
212af552f98f980178db37eed28a609b6bf55f6df8Will Dietz
222af552f98f980178db37eed28a609b6bf55f6df8Will Dietz  // CHECK: End
232af552f98f980178db37eed28a609b6bf55f6df8Will Dietz  fprintf(stderr, "End\n");
242af552f98f980178db37eed28a609b6bf55f6df8Will Dietz  return 0;
252af552f98f980178db37eed28a609b6bf55f6df8Will Dietz}
26