[cfe-commits] r66481 - in /cfe/trunk: lib/CodeGen/CGObjCMac.cpp test/CodeGenObjC/objc-align.m

Fariborz Jahanian fjahanian at apple.com
Mon Mar 9 15:28:21 PDT 2009


On Mar 9, 2009, at 3:18 PM, Daniel Dunbar wrote:

> Author: ddunbar
> Date: Mon Mar  9 17:18:41 2009
> New Revision: 66481
>
> URL: http://llvm.org/viewvc/llvm-project?rev=66481&view=rev
> Log:
> NeXT: Set alignment on a number of ObjC metadata variables (matching  
> llvm-gcc).
>
> Added:
>    cfe/trunk/test/CodeGenObjC/objc-align.m
> Modified:
>    cfe/trunk/lib/CodeGen/CGObjCMac.cpp
>
> Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=66481&r1=66480&r2=66481&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Mon Mar  9 17:18:41 2009
> @@ -1086,6 +1086,7 @@
>                                std::string("\01L_OBJC_PROTOCOL_") 
> +ProtocolName,
>                                &CGM.getModule());
>     Entry->setSection("__OBJC,__protocol,regular,no_dead_strip");
> +    Entry->setAlignment(4);
>     UsedGlobals.push_back(Entry);
>     // FIXME: Is this necessary? Why only for protocol?
>     Entry->setAlignment(4);
> @@ -1108,6 +1109,7 @@
>                                "\01L_OBJC_PROTOCOL_" + PD- 
> >getNameAsString(),
>                                &CGM.getModule());
>     Entry->setSection("__OBJC,__protocol,regular,no_dead_strip");
> +    Entry->setAlignment(4);
>     UsedGlobals.push_back(Entry);
>     // FIXME: Is this necessary? Why only for protocol?
>     Entry->setAlignment(4);
> @@ -1195,7 +1197,7 @@
>   llvm::Constant *Init = llvm::ConstantStruct::get(Values);
>   llvm::GlobalVariable *GV =
>     CreateMetadataVar(Name, Init,  
> "__OBJC,__cat_cls_meth,regular,no_dead_strip",
> -                      0, false);
> +                      4, false);
>   return llvm::ConstantExpr::getBitCast(GV,  
> ObjCTypes.ProtocolListPtrTy);
> }
>
> @@ -1354,7 +1356,7 @@
>   llvm::GlobalVariable *GV =
>     CreateMetadataVar(std::string("\01L_OBJC_CATEGORY_")+ExtName,  
> Init,
>                       "__OBJC,__category,regular,no_dead_strip",
> -                      0, true);
> +                      4, true);
>   DefinedCategories.push_back(GV);
> }
>
> @@ -1489,8 +1491,7 @@
>   llvm::GlobalVariable *GV =
>     CreateMetadataVar(std::string("\01L_OBJC_CLASS_")+ClassName, Init,
>                       "__OBJC,__class,regular,no_dead_strip",
> -                      32, // FIXME: Why?
> -                      true);
> +                      4, true);
>   DefinedClasses.push_back(GV);
> }
>
> @@ -1559,9 +1560,8 @@
>                                   &CGM.getModule());
>   }
>   GV->setSection("__OBJC,__meta_class,regular,no_dead_strip");
> +  GV->setAlignment(4);
>   UsedGlobals.push_back(GV);
> -  // FIXME: Why?
> -  GV->setAlignment(32);
>
>   return GV;
> }
> @@ -1715,8 +1715,8 @@
>   llvm::GlobalVariable *GV;
>   if (ForClass)
>     GV = CreateMetadataVar("\01L_OBJC_CLASS_VARIABLES_" + ID- 
> >getNameAsString(),
> -                           Init,  
> "__OBJC,__cls_vars,regular,no_dead_strip",
> -                           32, true);
> +                           Init,  
> "__OBJC,__class_vars,regular,no_dead_strip",
> +                           4, true);
>   else
>     GV = CreateMetadataVar("\01L_OBJC_INSTANCE_VARIABLES_"
>                            + ID->getNameAsString(),
> @@ -2349,7 +2349,7 @@
>   CreateMetadataVar("\01L_OBJC_MODULES",
>                     llvm::ConstantStruct::get(ObjCTypes.ModuleTy,  
> Values),
>                     "__OBJC,__module_info,regular,no_dead_strip",
> -                    0, true);
> +                    4, true);
> }
>
> llvm::Constant *CGObjCMac::EmitModuleSymbols() {
> @@ -3493,8 +3493,7 @@
>                                Init,
>                                "\01L_OBJC_LABEL_CLASS_$",
>                                &CGM.getModule());
> -    GV->setAlignment(
> -      CGM.getTargetData().getPrefTypeAlignment(ObjCTypes.Int8PtrTy));
> +    GV->setAlignment(8);

Why are we hard coding the alignment here and in other places, instead  
of getting the alignment of the symbol that this
section is for?

- fariborz




More information about the cfe-commits mailing list