[ubsan] Stop cast-overflow.cpp test leaking undefined behaviour into the exit code.
authorDaniel Sanders <daniel.sanders@imgtec.com>
Wed, 22 Apr 2015 16:14:01 +0000 (16:14 +0000)
committerDaniel Sanders <daniel.sanders@imgtec.com>
Wed, 22 Apr 2015 16:14:01 +0000 (16:14 +0000)
Summary:
ubsan was correctly catching the undefined behaviour but lit's shell was
failing the test anyway because the exit code was non-zero as a result of the
undefined behaviour.

This fixes the test on a mips-linux-gnu target.

Reviewers: samsonov

Reviewed By: samsonov

Subscribers: samsonov, llvm-commits, rsmith, sagar

Differential Revision: http://reviews.llvm.org/D9155

llvm-svn: 235518

compiler-rt/test/ubsan/TestCases/Float/cast-overflow.cpp

index 82c6e0d86db83085450929637e5165914ff5b92c..1193e7badfc7d4eaa1c1ecb4e4bf47ca3e394d84 100644 (file)
@@ -87,9 +87,11 @@ int main(int argc, char **argv) {
     static int test_int = MaxFloatRepresentableAsInt + 0x80;
     return 0;
     }
-  case '1':
+  case '1': {
     // CHECK-1: runtime error: value -2.14748{{.*}} is outside the range of representable values of type 'int'
-    return MinFloatRepresentableAsInt - 0x100;
+    static int test_int = MinFloatRepresentableAsInt - 0x100;
+    return 0;
+  }
   case '2': {
     // CHECK-2: runtime error: value -1 is outside the range of representable values of type 'unsigned int'
     volatile float f = -1.0;
@@ -107,9 +109,11 @@ int main(int argc, char **argv) {
     static int test_int = Inf;
     return 0;
   }
-  case '5':
+  case '5': {
     // CHECK-5: runtime error: value {{.*}} is outside the range of representable values of type 'int'
-    return NaN;
+    static int test_int = NaN;
+    return 0;
+  }
 
     // Integer -> floating point overflow.
   case '6': {