blob: 7e42655e6fe0adae1e27c6383ec7c0217d791e6a [file] [log] [blame]
Daniel Dunbarfd089992009-06-26 16:47:03 +00001//===-- negvsi2.c - Implement __negvsi2 -----------------------------------===//
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 __negvsi2 for the compiler_rt library.
11//
12//===----------------------------------------------------------------------===//
13
14#include "int_lib.h"
15#include <stdlib.h>
16
17// Returns: -a
18
19// Effects: aborts if -a overflows
20
21si_int
22__negvsi2(si_int a)
23{
24 const si_int MIN = (si_int)1 << ((int)(sizeof(si_int) * CHAR_BIT)-1);
25 if (a == MIN)
26 abort();
27 return -a;
28}