[PATCH] D79525: [Sema] require -fcf-runtime-abi= for __NSConstantString

2020-05-19 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers added a comment.

clang::Codegen::DeferredDecls might be of interest here.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79525/new/

https://reviews.llvm.org/D79525



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D79525: [Sema] require -fcf-runtime-abi= for __NSConstantString

2020-05-06 Thread Nick Desaulniers via Phabricator via cfe-commits
nickdesaulniers created this revision.
nickdesaulniers added a reviewer: compnerd.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

commit 81a650ee87eb ("Driver,CodeGen: introduce support for Swift CFString 
layout")
r345222

added support for implicit typedefs for __NSConstantString, used for
the runtime ABI for CoreFoundation, which can be set via -fcf-runtime-abi=.

This implicit typdef pollutes the global namespace for code that's not
targeting CoreFoundation platforms. As such, require -fcf-runtime-abi=
to be used, and disallow the creation of the typedef for C code that
does not specify.

This is most visable dumping ASTs when debugging.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D79525

Files:
  clang/lib/Sema/Sema.cpp
  clang/test/AST/ast-dump-file-line-json.c
  clang/test/AST/ast-dump-record-definition-data-json.cpp
  clang/test/AST/ast-dump-records-json.cpp
  clang/test/AST/ast-dump-template-decls-json.cpp
  clang/test/CodeGen/cf-runtime-abi.c

Index: clang/test/CodeGen/cf-runtime-abi.c
===
--- clang/test/CodeGen/cf-runtime-abi.c
+++ clang/test/CodeGen/cf-runtime-abi.c
@@ -1,7 +1,3 @@
-// RUN: %clang_cc1 -triple x86_64-apple-macosx -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-OBJC
-// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-OBJC-LLP64
-// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-OBJC
-
 // RUN: %clang_cc1 -triple x86_64-apple-macosx -fcf-runtime-abi=objc -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-OBJC
 // RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -fcf-runtime-abi=objc -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-OBJC-LLP64
 // RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fcf-runtime-abi=objc -S -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-OBJC
Index: clang/test/AST/ast-dump-template-decls-json.cpp
===
--- clang/test/AST/ast-dump-template-decls-json.cpp
+++ clang/test/AST/ast-dump-template-decls-json.cpp
@@ -120,34 +120,6 @@
 // CHECK-NEXT: "end": {}
 // CHECK-NEXT:},
 // CHECK-NEXT:"isImplicit": true,
-// CHECK-NEXT:"name": "__NSConstantString",
-// CHECK-NEXT:"type": {
-// CHECK-NEXT: "qualType": "__NSConstantString_tag"
-// CHECK-NEXT:},
-// CHECK-NEXT:"inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT:  "id": "0x{{.*}}",
-// CHECK-NEXT:  "kind": "RecordType",
-// CHECK-NEXT:  "type": {
-// CHECK-NEXT:   "qualType": "__NSConstantString_tag"
-// CHECK-NEXT:  },
-// CHECK-NEXT:  "decl": {
-// CHECK-NEXT:   "id": "0x{{.*}}",
-// CHECK-NEXT:   "kind": "CXXRecordDecl",
-// CHECK-NEXT:   "name": "__NSConstantString_tag"
-// CHECK-NEXT:  }
-// CHECK-NEXT: }
-// CHECK-NEXT:]
-// CHECK-NEXT:   },
-// CHECK-NEXT:   {
-// CHECK-NEXT:"id": "0x{{.*}}",
-// CHECK-NEXT:"kind": "TypedefDecl",
-// CHECK-NEXT:"loc": {},
-// CHECK-NEXT:"range": {
-// CHECK-NEXT: "begin": {},
-// CHECK-NEXT: "end": {}
-// CHECK-NEXT:},
-// CHECK-NEXT:"isImplicit": true,
 // CHECK-NEXT:"name": "__builtin_ms_va_list",
 // CHECK-NEXT:"type": {
 // CHECK-NEXT: "qualType": "char *"
Index: clang/test/AST/ast-dump-records-json.cpp
===
--- clang/test/AST/ast-dump-records-json.cpp
+++ clang/test/AST/ast-dump-records-json.cpp
@@ -88,11 +88,6 @@
 // using --filters=CXXRecordDecl
 
 
-// CHECK:  "kind": "CXXRecordDecl",
-// CHECK-NEXT:  "name": "__NSConstantString_tag"
-// CHECK-NEXT: }
-
-
 // CHECK:  "kind": "CXXRecordDecl",
 // CHECK-NEXT:  "name": "__va_list_tag"
 // CHECK-NEXT: }
Index: clang/test/AST/ast-dump-record-definition-data-json.cpp
===
--- clang/test/AST/ast-dump-record-definition-data-json.cpp
+++ clang/test/AST/ast-dump-record-definition-data-json.cpp
@@ -128,11 +128,6 @@
 // using --filters=CXXRecordDecl
 
 
-// CHECK:  "kind": "CXXRecordDecl",
-// CHECK-NEXT:  "name": "__NSConstantString_tag"
-// CHECK-NEXT: }
-
-
 // CHECK:  "kind": "CXXRecordDecl",
 // CHECK-NEXT:  "name": "__va_list_tag"
 // CHECK-NEXT: }
Index: clang/test/AST/ast-dump-file-line-json.c
===
--- clang/test/AST/ast-dump-file-line-json.c
+++ clang/test/AST/ast-dump-file-line-json.c
@@ -75,34 +75,6 @@
 // CHECK-NEXT: "end": {}
 // CHECK-NEXT:},
 // CHECK-NEXT:"isImplicit": true,
-// CHECK-NEXT:"name": "__NSConstantString",
-// CHECK-NEXT:"type": {
-// CHECK-NEXT: "qualType": "struct __NSConstantString_tag"
-// CHECK-NEXT:},
-// CHECK-NEXT:"inner": [
-// CHECK-NEXT: {
-// CHECK-NEXT:  "id": "0x{{.*}}",
-// CHECK-NEXT:  "kind": "RecordType",
-//