зеркало из https://github.com/microsoft/clang-1.git
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:
Родитель
ac7db1fecf
Коммит
772494c3b8
|
@ -475,6 +475,7 @@ BUILTIN(__sync_fetch_and_umax, "UiUi*Ui", "n")
|
||||||
|
|
||||||
// C99 library functions
|
// C99 library functions
|
||||||
// C99 stdlib.h
|
// C99 stdlib.h
|
||||||
|
LIBBUILTIN(abort, "v", "fr", "stdlib.h")
|
||||||
LIBBUILTIN(calloc, "v*zz", "f", "stdlib.h")
|
LIBBUILTIN(calloc, "v*zz", "f", "stdlib.h")
|
||||||
LIBBUILTIN(exit, "vi", "fr", "stdlib.h")
|
LIBBUILTIN(exit, "vi", "fr", "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 setregid(gid_t, gid_t);
|
||||||
int setreuid(uid_t, uid_t);
|
int setreuid(uid_t, uid_t);
|
||||||
extern void check(int);
|
extern void check(int);
|
||||||
|
void abort(void);
|
||||||
|
|
||||||
void test_setuid()
|
void test_setuid()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
// RUN: %clang_cc1 %s -verify -fsyntax-only
|
// RUN: %clang_cc1 %s -verify -fsyntax-only
|
||||||
|
|
||||||
|
void abort(void);
|
||||||
|
|
||||||
@interface Subclass
|
@interface Subclass
|
||||||
+ (int)magicNumber;
|
+ (int)magicNumber;
|
||||||
+ (void)setMagicNumber:(int)value;
|
+ (void)setMagicNumber:(int)value;
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
- (void) setOptional_getter_attr:(int)value { ivar = value; }
|
- (void) setOptional_getter_attr:(int)value { ivar = value; }
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
void abort(void);
|
||||||
int main ()
|
int main ()
|
||||||
{
|
{
|
||||||
Test *x = [[Test alloc] init];
|
Test *x = [[Test alloc] init];
|
||||||
|
|
|
@ -80,6 +80,7 @@ static int g_val;
|
||||||
}
|
}
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
void abort(void);
|
||||||
int main (void) {
|
int main (void) {
|
||||||
Subclass *x = [[Subclass alloc] init];
|
Subclass *x = [[Subclass alloc] init];
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче