Skip to content

Commit a46fade

Browse files
author
Marcin Koscielnicki
committed
[Builtin] Make __builtin_thread_pointer target-independent.
This is now supported for ARM, AArch64, PowerPC, SystemZ, SPARC, Mips. Differential Revision: http://reviews.llvm.org/D19589 llvm-svn: 272893
1 parent cf1d498 commit a46fade

File tree

5 files changed

+9
-3
lines changed

5 files changed

+9
-3
lines changed

clang/include/clang/Basic/Builtins.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,7 @@ BUILTIN(__builtin_eh_return_data_regno, "iIi", "nc")
467467
BUILTIN(__builtin_snprintf, "ic*zcC*.", "nFp:2:")
468468
BUILTIN(__builtin_vsprintf, "ic*cC*a", "nFP:1:")
469469
BUILTIN(__builtin_vsnprintf, "ic*zcC*a", "nFP:2:")
470+
BUILTIN(__builtin_thread_pointer, "v*", "nc")
470471

471472
// GCC exception builtins
472473
BUILTIN(__builtin_eh_return, "vzv*", "r") // FIXME: Takes intptr_t, not size_t!

clang/include/clang/Basic/BuiltinsAArch64.def

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,5 @@ BUILTIN(__builtin_arm_rsrp, "v*cC*", "nc")
6060
BUILTIN(__builtin_arm_wsr, "vcC*Ui", "nc")
6161
BUILTIN(__builtin_arm_wsr64, "vcC*LUi", "nc")
6262
BUILTIN(__builtin_arm_wsrp, "vcC*vC*", "nc")
63-
BUILTIN(__builtin_thread_pointer, "v*", "nc")
6463

6564
#undef BUILTIN

clang/include/clang/Basic/BuiltinsARM.def

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
// In libgcc
2222
BUILTIN(__clear_cache, "vv*v*", "i")
23-
BUILTIN(__builtin_thread_pointer, "v*", "")
2423

2524
// Saturating arithmetic
2625
BUILTIN(__builtin_arm_qadd, "iii", "nc")

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2158,6 +2158,13 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,
21582158
case Builtin::BI__builtin_canonicalizef:
21592159
case Builtin::BI__builtin_canonicalizel:
21602160
return RValue::get(emitUnaryBuiltin(*this, E, Intrinsic::canonicalize));
2161+
2162+
case Builtin::BI__builtin_thread_pointer: {
2163+
if (!getContext().getTargetInfo().isTLSSupported())
2164+
CGM.ErrorUnsupported(E, "__builtin_thread_pointer");
2165+
// Fall through - it's already mapped to the intrinsic by GCCBuiltin.
2166+
break;
2167+
}
21612168
}
21622169

21632170
// If this is an alias for a lib function (e.g. __builtin_sin), emit

clang/test/CodeGen/builtins-arm64.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_cc1 -triple arm64-apple-ios -emit-llvm -o - %s | opt -S -mem2reg | FileCheck %s
1+
// RUN: %clang_cc1 -triple arm64-unknown-linux -emit-llvm -o - %s | opt -S -mem2reg | FileCheck %s
22

33
void f0(void *a, void *b) {
44
__clear_cache(a,b);

0 commit comments

Comments
 (0)