Add abort() as a builtin. This has two effects: one, we warn for incorrect

declarations of abort(), and two, we mark it noreturn.  Missing the latter
shows up in one of the "embarassing" tests (from the thread on llvmdev
"detailed comparison of generated code size for LLVM and other compilers").



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91515 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eli Friedman 2009-12-16 06:28:21 +00:00
Родитель ac7db1fecf
Коммит 772494c3b8
5 изменённых файлов: 6 добавлений и 0 удалений

Просмотреть файл

@ -475,6 +475,7 @@ BUILTIN(__sync_fetch_and_umax, "UiUi*Ui", "n")
// C99 library functions
// C99 stdlib.h
LIBBUILTIN(abort, "v", "fr", "stdlib.h")
LIBBUILTIN(calloc, "v*zz", "f", "stdlib.h")
LIBBUILTIN(exit, "vi", "fr", "stdlib.h")
LIBBUILTIN(_Exit, "vi", "fr", "stdlib.h")

Просмотреть файл

@ -48,6 +48,7 @@ int setuid(uid_t);
int setregid(gid_t, gid_t);
int setreuid(uid_t, uid_t);
extern void check(int);
void abort(void);
void test_setuid()
{

Просмотреть файл

@ -1,5 +1,7 @@
// RUN: %clang_cc1 %s -verify -fsyntax-only
void abort(void);
@interface Subclass
+ (int)magicNumber;
+ (void)setMagicNumber:(int)value;

Просмотреть файл

@ -44,6 +44,7 @@
- (void) setOptional_getter_attr:(int)value { ivar = value; }
@end
void abort(void);
int main ()
{
Test *x = [[Test alloc] init];

Просмотреть файл

@ -80,6 +80,7 @@ static int g_val;
}
@end
void abort(void);
int main (void) {
Subclass *x = [[Subclass alloc] init];