<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Bill,</div>Committed clang revision 150650. Please verify this is the correct fix.<div><br></div><div> Chad<br><div><div><br></div><div><br></div><div>On Feb 15, 2012, at 5:47 PM, Chad Rosier wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Bill,<div>Did you by chance miss one test case?</div><div><br></div><div><span class="Apple-style-span" style="font-family: Times; "><pre style="font-family: 'Courier New', courier, monotype; "><span class="stdout" style="font-family: 'Courier New', courier, monotype; color: black; ">******************** TEST 'Clang :: CodeGenObjC/arc-no-arc-exceptions.m' FAILED ********************Script:
--
Exit Code: 1
Command Output (stderr):
--
/Users/buildslave/zorg/buildbot/smooshlab/slave-0.8/build.clang-x86_64-darwin10-gcc42-RA/clang.src/test/CodeGenObjC/arc-no-arc-exceptions.m:12:11: error: expected string not found in input
// CHECK: call void @thrower(), !clang.arc.no_objc_arc_exceptions !0
^
<stdin>:48:20: note: scanning from here
define void @test0() {
^
<stdin>:50:2: note: possible intended match here
call void @thrower(), !clang.arc.no_objc_arc_exceptions !4
^
--
********************</span></pre></span><div> Chad</div></div><div><br></div><div><br><div><div>On Feb 15, 2012, at 5:13 PM, Bill Wendling wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Author: void<br>Date: Wed Feb 15 19:13:30 2012<br>New Revision: 150648<br><br>URL: <a href="http://llvm.org/viewvc/llvm-project?rev=150648&view=rev">http://llvm.org/viewvc/llvm-project?rev=150648&view=rev</a><br>Log:<br>Use the new method for specifying garbage collection metadata in the module.<br><br>The garbage collection metadata needs to be merged "intelligently", when two or<br>more modules are linked together, and not merely appended. (Appending creates a<br>section which is too large.) The module flags metadata method is the way to do<br>this.<br><<a href="rdar://problem/8198537">rdar://problem/8198537</a>><br><br>Modified:<br> cfe/trunk/lib/CodeGen/CGObjCMac.cpp<br> cfe/trunk/test/CodeGenObjC/debug-info-block-helper.m<br> cfe/trunk/test/CodeGenObjC/image-info.m<br> cfe/trunk/test/CodeGenObjC/objc-align.m<br><br>Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=150648&r1=150647&r2=150648&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=150648&r1=150647&r2=150648&view=diff</a><br>==============================================================================<br>--- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original)<br>+++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Wed Feb 15 19:13:30 2012<br>@@ -3568,33 +3568,48 @@<br><br> void CGObjCCommonMac::EmitImageInfo() {<br> unsigned version = 0; // Version is unused?<br>- unsigned flags = 0;<br>-<br>- // FIXME: Fix and continue?<br>- if (CGM.getLangOptions().getGC() != LangOptions::NonGC)<br>- flags |= eImageInfo_GarbageCollected;<br>- if (CGM.getLangOptions().getGC() == LangOptions::GCOnly)<br>- flags |= eImageInfo_GCOnly;<br>-<br>- // We never allow @synthesize of a superclass property.<br>- flags |= eImageInfo_CorrectedSynthesize;<br>-<br>- // Emitted as int[2];<br>- uint32_t Values[2] = { version, flags };<br>-<br>- const char *Section;<br>- if (ObjCABI == 1)<br>- Section = "__OBJC, __image_info,regular";<br>- else<br>- Section = "__DATA, __objc_imageinfo, regular, no_dead_strip";<br>- llvm::GlobalVariable *GV =<br>- CreateMetadataVar("\01L_OBJC_IMAGE_INFO",<br>- llvm::ConstantDataArray::get(VMContext, Values),<br>- Section, 0, true);<br>- GV->setConstant(true);<br>+ const char *Section = (ObjCABI == 1) ?<br>+ "__OBJC, __image_info,regular" :<br>+ "__DATA, __objc_imageinfo, regular, no_dead_strip";<br>+<br>+ // Generate module-level named metadata to convey this information to the<br>+ // linker and code-gen.<br>+ llvm::Module &Mod = CGM.getModule();<br>+<br>+ // Add the ObjC ABI version to the module flags.<br>+ Mod.addModuleFlag(llvm::Module::Error, "Objective-C Version", ObjCABI);<br>+ Mod.addModuleFlag(llvm::Module::Error, "Objective-C Image Info Version",<br>+ version);<br>+ Mod.addModuleFlag(llvm::Module::Error, "Objective-C Image Info Section",<br>+ llvm::MDString::get(VMContext,Section));<br>+<br>+ if (CGM.getLangOptions().getGC() == LangOptions::NonGC) {<br>+ // Non-GC overrides those files which specify GC.<br>+ Mod.addModuleFlag(llvm::Module::Override,<br>+ "Objective-C Garbage Collection", (uint32_t)0);<br>+ } else {<br>+ // Add the ObjC garbage collection value.<br>+ Mod.addModuleFlag(llvm::Module::Error,<br>+ "Objective-C Garbage Collection",<br>+ eImageInfo_GarbageCollected);<br>+<br>+ if (CGM.getLangOptions().getGC() == LangOptions::GCOnly) {<br>+ // Add the ObjC GC Only value.<br>+ Mod.addModuleFlag(llvm::Module::Error, "Objective-C GC Only",<br>+ eImageInfo_GCOnly);<br>+<br>+ // Require that GC be specified and set to eImageInfo_GarbageCollected.<br>+ llvm::Value *Ops[2] = {<br>+ llvm::MDString::get(VMContext, "Objective-C Garbage Collection"),<br>+ llvm::ConstantInt::get(llvm::Type::getInt32Ty(VMContext),<br>+ eImageInfo_GarbageCollected)<br>+ };<br>+ Mod.addModuleFlag(llvm::Module::Require, "Objective-C GC Only",<br>+ llvm::MDNode::get(VMContext, Ops));<br>+ }<br>+ }<br> }<br><br>-<br> // struct objc_module {<br> // unsigned long version;<br> // unsigned long size;<br><br>Modified: cfe/trunk/test/CodeGenObjC/debug-info-block-helper.m<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/debug-info-block-helper.m?rev=150648&r1=150647&r2=150648&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/debug-info-block-helper.m?rev=150648&r1=150647&r2=150648&view=diff</a><br>==============================================================================<br>--- cfe/trunk/test/CodeGenObjC/debug-info-block-helper.m (original)<br>+++ cfe/trunk/test/CodeGenObjC/debug-info-block-helper.m Wed Feb 15 19:13:30 2012<br>@@ -2,7 +2,7 @@<br> // RUN: %clang_cc1 -emit-llvm -fblocks -g -triple x86_64-apple-darwin10 -fobjc-fragile-abi %s -o - | FileCheck %s<br> extern void foo(void(^)(void));<br><br>-// CHECK: !36 = metadata !{i32 {{.*}}, i32 0, metadata !6, metadata !"__destroy_helper_block_", metadata !"__destroy_helper_block_", metadata !"", metadata !6, i32 24, metadata !37, i1 true, i1 true, i32 0, i32 0, null, i32 256, i1 false, void (i8*)* @__destroy_helper_block_, null, null, metadata !39} ; [ DW_TAG_subprogram ]<br>+// CHECK: !40 = metadata !{i32 {{.*}}, i32 0, metadata !10, metadata !"__destroy_helper_block_", metadata !"__destroy_helper_block_", metadata !"", metadata !10, i32 24, metadata !41, i1 true, i1 true, i32 0, i32 0, null, i32 256, i1 false, void (i8*)* @__destroy_helper_block_, null, null, metadata !43} ; [ DW_TAG_subprogram ]<br><br> @interface NSObject {<br> struct objc_object *isa;<br><br>Modified: cfe/trunk/test/CodeGenObjC/image-info.m<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/image-info.m?rev=150648&r1=150647&r2=150648&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/image-info.m?rev=150648&r1=150647&r2=150648&view=diff</a><br>==============================================================================<br>--- cfe/trunk/test/CodeGenObjC/image-info.m (original)<br>+++ cfe/trunk/test/CodeGenObjC/image-info.m Wed Feb 15 19:13:30 2012<br>@@ -4,5 +4,14 @@<br> // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o %t %s<br> // RUN: FileCheck --check-prefix CHECK-NONFRAGILE < %t %s<br><br>-// CHECK-FRAGILE: @"\01L_OBJC_IMAGE_INFO" = internal constant [2 x i32] [i32 0, i32 16], section "__OBJC, __image_info,regular"<br>-// CHECK-NONFRAGILE: @"\01L_OBJC_IMAGE_INFO" = internal constant [2 x i32] [i32 0, i32 16], section "__DATA, __objc_imageinfo, regular, no_dead_strip"<br>+// CHECK-FRAGILE: !llvm.module.flags = !{!0, !1, !2, !3}<br>+// CHECK-FRAGILE: !0 = metadata !{i32 1, metadata !"Objective-C Version", i32 1}<br>+// CHECK-FRAGILE-NEXT: !1 = metadata !{i32 1, metadata !"Objective-C Image Info Version", i32 0}<br>+// CHECK-FRAGILE-NEXT: !2 = metadata !{i32 1, metadata !"Objective-C Image Info Section", metadata !"__OBJC, __image_info,regular"}<br>+// CHECK-FRAGILE-NEXT: !3 = metadata !{i32 4, metadata !"Objective-C Garbage Collection", i32 0}<br>+<br>+// CHECK-NONFRAGILE: !llvm.module.flags = !{!0, !1, !2, !3}<br>+// CHECK-NONFRAGILE: !0 = metadata !{i32 1, metadata !"Objective-C Version", i32 2}<br>+// CHECK-NONFRAGILE-NEXT: !1 = metadata !{i32 1, metadata !"Objective-C Image Info Version", i32 0}<br>+// CHECK-NONFRAGILE-NEXT: !2 = metadata !{i32 1, metadata !"Objective-C Image Info Section", metadata !"__DATA, __objc_imageinfo, regular, no_dead_strip"}<br>+// CHECK-NONFRAGILE-NEXT: !3 = metadata !{i32 4, metadata !"Objective-C Garbage Collection", i32 0}<br><br>Modified: cfe/trunk/test/CodeGenObjC/objc-align.m<br>URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/objc-align.m?rev=150648&r1=150647&r2=150648&view=diff">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/objc-align.m?rev=150648&r1=150647&r2=150648&view=diff</a><br>==============================================================================<br>--- cfe/trunk/test/CodeGenObjC/objc-align.m (original)<br>+++ cfe/trunk/test/CodeGenObjC/objc-align.m Wed Feb 15 19:13:30 2012<br>@@ -6,7 +6,6 @@<br> // RUN: grep '@"<a href="smb://01L_OBJC_CLASS_A">\\01L_OBJC_CLASS_A</a>" = internal global .*, section "__OBJC,__class,regular,no_dead_strip", align 4' %t<br> // RUN: grep '@"<a href="smb://01L_OBJC_CLASS_C">\\01L_OBJC_CLASS_C</a>" = internal global .*, section "__OBJC,__class,regular,no_dead_strip", align 4' %t<br> // RUN: grep '@"<a href="smb://01L_OBJC_CLASS_PROTOCOLS_C">\\01L_OBJC_CLASS_PROTOCOLS_C</a>" = internal global .*, section "__OBJC,__cat_cls_meth,regular,no_dead_strip", align 4' %t<br>-// RUN: grep '@"<a href="smb://01L_OBJC_IMAGE_INFO">\\01L_OBJC_IMAGE_INFO</a>" = internal constant .*, section "__OBJC, __image_info,regular"' %t<br> // RUN: grep '@"<a href="smb://01L_OBJC_METACLASS_A">\\01L_OBJC_METACLASS_A</a>" = internal global .*, section "__OBJC,__meta_class,regular,no_dead_strip", align 4' %t<br> // RUN: grep '@"<a href="smb://01L_OBJC_METACLASS_C">\\01L_OBJC_METACLASS_C</a>" = internal global .*, section "__OBJC,__meta_class,regular,no_dead_strip", align 4' %t<br> // RUN: grep '@"<a href="smb://01L_OBJC_MODULES">\\01L_OBJC_MODULES</a>" = internal global .*, section "__OBJC,__module_info,regular,no_dead_strip", align 4' %t<br>@@ -20,7 +19,6 @@<br> // RUNX: grep '@"OBJC_METACLASS_$_A" = global' %t &&<br> // RUNX: grep '@"OBJC_METACLASS_$_C" = global' %t &&<br> // RUNX: grep '@"<a href="smb://01L_OBJC_CLASSLIST_REFERENCES_$_0">\\01L_OBJC_CLASSLIST_REFERENCES_$_0</a>" = internal global .*, section "__DATA, __objc_classrefs, regular, no_dead_strip", align 8' %t &&<br>-// RUNX: grep '@"<a href="smb://01L_OBJC_IMAGE_INFO">\\01L_OBJC_IMAGE_INFO</a>" = internal constant .*, section "__DATA, __objc_imageinfo, regular, no_dead_strip"' %t &&<br> // RUNX: grep '@"<a href="smb://01L_OBJC_LABEL_CATEGORY_$">\\01L_OBJC_LABEL_CATEGORY_$</a>" = internal global .*, section "__DATA, __objc_catlist, regular, no_dead_strip", align 8' %t &&<br> // RUNX: grep '@"<a href="smb://01L_OBJC_LABEL_CLASS_$">\\01L_OBJC_LABEL_CLASS_$</a>" = internal global .*, section "__DATA, __objc_classlist, regular, no_dead_strip", align 8' %t &&<br> // RUNX: grep '@"<a href="smb://01l_OBJC_$_CATEGORY_A_$_Cat">\\01l_OBJC_$_CATEGORY_A_$_Cat</a>" = internal global .*, section "__DATA, __objc_const", align 8' %t &&<br><br><br>_______________________________________________<br>cfe-commits mailing list<br><a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br></div></blockquote></div><br></div></div>_______________________________________________<br>cfe-commits mailing list<br><a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits<br></blockquote></div><br></div></body></html>