aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Schmidt <wschmidt@linux.ibm.com>2021-03-04 19:54:00 -0600
committerBill Schmidt <wschmidt@linux.ibm.com>2021-08-30 14:58:25 -0500
commitb5bc39317bf4da1d51cb6eccf8afcacc90514602 (patch)
tree1aebc7d40350da6153fad93722ae1f9cc1c3cd47
parenta6fe949d570f1957aa1caba572e20f2c0760f89a (diff)
downloadgcc-b5bc39317bf4da1d51cb6eccf8afcacc90514602.zip
gcc-b5bc39317bf4da1d51cb6eccf8afcacc90514602.tar.gz
gcc-b5bc39317bf4da1d51cb6eccf8afcacc90514602.tar.bz2
rs6000: Darwin builtin support
2021-03-04 Bill Schmidt <wschmidt@linux.ibm.com> gcc/ * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): Use the new decl when new_builtins_are_live. * config/rs6000/rs6000-builtin-new.def (__builtin_cfstring): New built-in.
-rw-r--r--gcc/config/rs6000/darwin.h8
-rw-r--r--gcc/config/rs6000/rs6000-builtin-new.def6
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/config/rs6000/darwin.h b/gcc/config/rs6000/darwin.h
index 42f39e6..6abf8e8 100644
--- a/gcc/config/rs6000/darwin.h
+++ b/gcc/config/rs6000/darwin.h
@@ -504,8 +504,12 @@
#define SUBTARGET_INIT_BUILTINS \
do { \
darwin_patch_builtins (); \
- rs6000_builtin_decls[(unsigned) (RS6000_BUILTIN_CFSTRING)] \
- = darwin_init_cfstring_builtins ((unsigned) (RS6000_BUILTIN_CFSTRING)); \
+ if (new_builtins_are_live) \
+ rs6000_builtin_decls_x[(unsigned) (RS6000_BIF_CFSTRING)] \
+ = darwin_init_cfstring_builtins ((unsigned) (RS6000_BIF_CFSTRING)); \
+ else \
+ rs6000_builtin_decls[(unsigned) (RS6000_BUILTIN_CFSTRING)] \
+ = darwin_init_cfstring_builtins ((unsigned) (RS6000_BUILTIN_CFSTRING)); \
} while(0)
/* So far, there is no rs6000_fold_builtin, if one is introduced, then
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 3e732ce..6a28d51 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -187,6 +187,12 @@
; Builtins that have been around since time immemorial or are just
; considered available everywhere.
[always]
+; __builtin_cfstring is for Darwin, which will replace the decl we
+; create here with another one during subtarget processing. We just
+; need to ensure it has a slot in the builtin enumeration.
+ void __builtin_cfstring ();
+ CFSTRING nothing {}
+
void __builtin_cpu_init ();
CPU_INIT nothing {cpu}