Home | History | Annotate | Download | only in lib
      1 /* ===-- addvti3.c - Implement __addvti3 -----------------------------------===
      2  *
      3  *                     The LLVM Compiler Infrastructure
      4  *
      5  * This file is distributed under the University of Illinois Open Source
      6  * License. See LICENSE.TXT for details.
      7  *
      8  * ===----------------------------------------------------------------------===
      9  *
     10  * This file implements __addvti3 for the compiler_rt library.
     11  *
     12  * ===----------------------------------------------------------------------===
     13  */
     14 
     15 #if __x86_64
     16 
     17 #include "int_lib.h"
     18 #include <stdlib.h>
     19 
     20 /* Returns: a + b */
     21 
     22 /* Effects: aborts if a + b overflows */
     23 
     24 ti_int
     25 __addvti3(ti_int a, ti_int b)
     26 {
     27     ti_int s = a + b;
     28     if (b >= 0)
     29     {
     30         if (s < a)
     31             abort();
     32     }
     33     else
     34     {
     35         if (s >= a)
     36             abort();
     37     }
     38     return s;
     39 }
     40 
     41 #endif
     42