blob: eb9f6e9168fda7caed1b325b8ea317b46304517c [file] [log] [blame]
Daniel Dunbarb3a69012009-06-26 16:47:03 +00001//===-- negvdi2.c - Implement __negvdi2 -----------------------------------===//
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 __negvdi2 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
21di_int
22__negvdi2(di_int a)
23{
24 const di_int MIN = (di_int)1 << ((int)(sizeof(di_int) * CHAR_BIT)-1);
25 if (a == MIN)
26 abort();
27 return -a;
28}