[clang] 28ecd7f - [clang-format] Don't break multi block parameters on ObjCBreakBeforeNestedBlockParam

2020-04-06 Thread Jin Lin via cfe-commits

Author: Kanglei Fang
Date: 2020-04-06T14:20:09-07:00
New Revision: 28ecd7f0b0865878a12d814a6d0de92cb7529d22

URL: 
https://github.com/llvm/llvm-project/commit/28ecd7f0b0865878a12d814a6d0de92cb7529d22
DIFF: 
https://github.com/llvm/llvm-project/commit/28ecd7f0b0865878a12d814a6d0de92cb7529d22.diff

LOG: [clang-format] Don't break multi block parameters on 
ObjCBreakBeforeNestedBlockParam

Summary:
While [the original diff](https://reviews.llvm.org/D42493) makes a lot of 
sense, and multiple inline block parameter/trailing paramemter after inline 
block paramemter should be discouraged, the formatting result is different than 
what xcode does by default
For the exact same example provided in the original diff:
```
[object
  blockArgument:^{
a = 42;
  }
 anotherArg:42];
```
The code is hard to read and not very visually pleasing

This diff uses `ObjCBreakBeforeNestedBlockParam` to shield from the formatting
When it's set to false, don't allign the inline block paramemters.

Reviewers: jolesiak, benhamilton, jinlin

Reviewed By: jolesiak

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D77039

Added: 


Modified: 
clang/docs/ClangFormatStyleOptions.rst
clang/lib/Format/ContinuationIndenter.cpp
clang/unittests/Format/FormatTestObjC.cpp

Removed: 




diff  --git a/clang/docs/ClangFormatStyleOptions.rst 
b/clang/docs/ClangFormatStyleOptions.rst
index 50b4ff5d9010..1c1d0142930f 100644
--- a/clang/docs/ClangFormatStyleOptions.rst
+++ b/clang/docs/ClangFormatStyleOptions.rst
@@ -2072,8 +2072,8 @@ the configuration (without a prefix: ``Auto``).
  - (void)_aMethod
  {
 [self.test1 t:self
- w:self
-callback:^(typeof(self) self, NSNumber *u, NSNumber *v) {
+w:self
+ callback:^(typeof(self) self, NSNumber *u, NSNumber *v) {
  u = c;
  }]
  }

diff  --git a/clang/lib/Format/ContinuationIndenter.cpp 
b/clang/lib/Format/ContinuationIndenter.cpp
index ba42ba0ca050..03e79a22954e 100644
--- a/clang/lib/Format/ContinuationIndenter.cpp
+++ b/clang/lib/Format/ContinuationIndenter.cpp
@@ -342,6 +342,7 @@ bool ContinuationIndenter::mustBreak(const LineState 
&State) {
   if (Previous.is(tok::semi) && State.LineContainsContinuedForLoopSection)
 return true;
   if (Style.Language == FormatStyle::LK_ObjC &&
+  Style.ObjCBreakBeforeNestedBlockParam &&
   Current.ObjCSelectorNameParts > 1 &&
   Current.startsSequence(TT_SelectorName, tok::colon, tok::caret)) {
 return true;

diff  --git a/clang/unittests/Format/FormatTestObjC.cpp 
b/clang/unittests/Format/FormatTestObjC.cpp
index edbf092d0421..42e2a80783be 100644
--- a/clang/unittests/Format/FormatTestObjC.cpp
+++ b/clang/unittests/Format/FormatTestObjC.cpp
@@ -1420,6 +1420,10 @@ TEST_F(FormatTestObjC, BreakLineBeforeNestedBlockParam) {
"*b, NSNumber *c) {\n"
"  b = c;\n"
"}]");
+  verifyFormat("[self.test1 t:self w:self callback:^(typeof(self) self, "
+   "NSNumber *u, NSNumber *v) {\n"
+   "  u = v;\n"
+   "} z:self]");
 
   Style.ColumnLimit = 80;
   verifyFormat(



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


[clang] a0cacb6 - Fix conflict value for metadata "Objective-C Garbage Collection" in the mix of swift and Objective-C bitcode

2020-03-11 Thread Jin Lin via cfe-commits

Author: Jin Lin
Date: 2020-03-11T13:26:06-07:00
New Revision: a0cacb60549f2346f7addf9205cd32720afc8fb4

URL: 
https://github.com/llvm/llvm-project/commit/a0cacb60549f2346f7addf9205cd32720afc8fb4
DIFF: 
https://github.com/llvm/llvm-project/commit/a0cacb60549f2346f7addf9205cd32720afc8fb4.diff

LOG: Fix conflict value for metadata "Objective-C Garbage Collection" in the 
mix of swift and Objective-C bitcode

Summary:
The change is to fix conflict value for metadata "Objective-C Garbage 
Collection" in the mix of swift and Objective-C bitcode.
The purpose is to provide the support of LTO for swift and Objective-C mixed 
project.

Reviewers: rjmccall, ahatanak, steven_wu

Reviewed By: rjmccall, steven_wu

Subscribers: manmanren, mehdi_amini, hiraditya, dexonsmith, llvm-commits, jinlin

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71219

Added: 
llvm/test/Bitcode/upgrade-garbage-collection-for-objc.ll
llvm/test/Bitcode/upgrade-garbage-collection-for-swift.ll
llvm/test/Linker/Inputs/empty-objc.ll
llvm/test/Linker/empty-swift.ll
llvm/test/Object/objc-swift-mixed-imageinfo-macho.ll

Modified: 
clang/lib/CodeGen/CGObjCMac.cpp
clang/test/CodeGenObjC/image-info.m
llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
llvm/lib/IR/AutoUpgrade.cpp

Removed: 




diff  --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp
index 0ab4fd8e224c..44c14a745a98 100644
--- a/clang/lib/CodeGen/CGObjCMac.cpp
+++ b/clang/lib/CodeGen/CGObjCMac.cpp
@@ -5159,15 +5159,18 @@ void CGObjCCommonMac::EmitImageInfo() {
   Mod.addModuleFlag(llvm::Module::Error, "Objective-C Image Info Section",
 llvm::MDString::get(VMContext, Section));
 
+  auto Int8Ty = llvm::Type::getInt8Ty(VMContext);
   if (CGM.getLangOpts().getGC() == LangOptions::NonGC) {
 // Non-GC overrides those files which specify GC.
-Mod.addModuleFlag(llvm::Module::Override,
-  "Objective-C Garbage Collection", (uint32_t)0);
+Mod.addModuleFlag(llvm::Module::Error,
+  "Objective-C Garbage Collection",
+  llvm::ConstantInt::get(Int8Ty,0));
   } else {
 // Add the ObjC garbage collection value.
 Mod.addModuleFlag(llvm::Module::Error,
   "Objective-C Garbage Collection",
-  eImageInfo_GarbageCollected);
+  llvm::ConstantInt::get(Int8Ty,
+(uint8_t)eImageInfo_GarbageCollected));
 
 if (CGM.getLangOpts().getGC() == LangOptions::GCOnly) {
   // Add the ObjC GC Only value.
@@ -5178,7 +5181,7 @@ void CGObjCCommonMac::EmitImageInfo() {
   llvm::Metadata *Ops[2] = {
   llvm::MDString::get(VMContext, "Objective-C Garbage Collection"),
   llvm::ConstantAsMetadata::get(llvm::ConstantInt::get(
-  llvm::Type::getInt32Ty(VMContext), 
eImageInfo_GarbageCollected))};
+  Int8Ty, eImageInfo_GarbageCollected))};
   Mod.addModuleFlag(llvm::Module::Require, "Objective-C GC Only",
 llvm::MDNode::get(VMContext, Ops));
 }

diff  --git a/clang/test/CodeGenObjC/image-info.m 
b/clang/test/CodeGenObjC/image-info.m
index 37156ed039e4..2b9af900354b 100644
--- a/clang/test/CodeGenObjC/image-info.m
+++ b/clang/test/CodeGenObjC/image-info.m
@@ -8,10 +8,10 @@
 // CHECK-FRAGILE:  !{{[0-9]+}} = !{i32 1, !"Objective-C Version", i32 1}
 // CHECK-FRAGILE-NEXT: !{{[0-9]+}} = !{i32 1, !"Objective-C Image Info 
Version", i32 0}
 // CHECK-FRAGILE-NEXT: !{{[0-9]+}} = !{i32 1, !"Objective-C Image Info 
Section", !"__OBJC,__image_info,regular"}
-// CHECK-FRAGILE-NEXT: !{{[0-9]+}} = !{i32 4, !"Objective-C Garbage 
Collection", i32 0}
+// CHECK-FRAGILE-NEXT: !{{[0-9]+}} = !{i32 1, !"Objective-C Garbage 
Collection", i8 0}
 
 // CHECK-NONFRAGILE:  !llvm.module.flags = !{{{.*}}}
 // CHECK-NONFRAGILE:  !{{[0-9]+}} = !{i32 1, !"Objective-C Version", i32 2}
 // CHECK-NONFRAGILE-NEXT: !{{[0-9]+}} = !{i32 1, !"Objective-C Image Info 
Version", i32 0}
 // CHECK-NONFRAGILE-NEXT: !{{[0-9]+}} = !{i32 1, !"Objective-C Image Info 
Section", !"__DATA,__objc_imageinfo,regular,no_dead_strip"}
-// CHECK-NONFRAGILE-NEXT: !{{[0-9]+}} = !{i32 4, !"Objective-C Garbage 
Collection", i32 0}
+// CHECK-NONFRAGILE-NEXT: !{{[0-9]+}} = !{i32 1, !"Objective-C Garbage 
Collection", i8 0}

diff  --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp 
b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
index d36d04e42cbe..2ce285c85672 100644
--- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
+++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
@@ -84,6 +84,15 @@ static void GetObjCImageInfo(Module &M, unsigned &Version, 
unsigned &Flags,
 } else if (Key == "Objective-C Image Info Section") {
   Section = cast(MFE.Val)->getString();
 }
+// Backend generates L_OBJC_IMAGE_INFO from Swift ABI version + major + 
mino