much better. Thx! Sun 2011/8/29 朱庆 <zqing1...@gmail.com>: > no, only orignal _align field less by one bit, the total does not > change(32 bit). > > 在 2011年8月29日 下午2:44,Sun Chan <sun.c...@gmail.com> 写道: >> does this means index field is less by one bit? >> Sun >> >> 2011/8/29 朱庆 <zqing1...@gmail.com>: >>> Hi all, >>> I made a new patch to keep user defined align info in TY_IDX, please >>> have a review. >>> the structure of TY_IDX is: >>> // struct TY_IDX { >>> // UINT index : 24; >>> // UINT _restrict : 1; >>> // UINT _volatile : 1; >>> // UINT _const : 1; >>> // UINT _user_align : 1; >>> // UINT _align : 4; >>> // }; >>> extract 1 bit from _align to mark user defined align. and now the >>> maximum align is 2^15, the same as the gcc behavior. >>> >>> Thanks >>> zhuqing >>> >>> 在 2011年8月26日 下午1:19,Jian-Xin Lai <laij...@gmail.com> 写道: >>>> Understand. We'll make a new change and keep this info in TY_IDX, instead >>>> of >>>> in ST. >>>> >>>> 在 2011年8月25日 下午4:01,Sun Chan <sun.c...@gmail.com>写道: >>>>> >>>>> I have problem having one attribute that have annotation in 2 >>>>> different places. Also, the reason it is in TYPE is that symbols of >>>>> the same declaration but of different alignment should really be of >>>>> different type. >>>>> Sun >>>>> >>>>> 2011/8/25 Jian-Xin Lai <laij...@gmail.com>: >>>>> > The TY has "packed" flag and it's detected in Adjust_Alignment: >>>>> > 125 align= TY_align(ty_idx); >>>>> > 126 >>>>> > 127 if (Is_Structure_Type(ty) && TY_is_packed(ty)) >>>>> > 128 { >>>>> > 129 return align; >>>>> > 130 } >>>>> > >>>>> > If the TY is packed, the BE don't change its alignment. We did the >>>>> > similar >>>>> > thing. The different is our change is applied on ST instead of TY >>>>> > because >>>>> > this is a GNU extension on variable. >>>>> > >>>>> > 在 2011年8月25日 下午3:05,Sun Chan <sun.c...@gmail.com>写道: >>>>> >> >>>>> >> How would you classify "pack" data? >>>>> >> Sun >>>>> >> >>>>> >> 2011/8/25 Jian-Xin Lai <laij...@gmail.com>: >>>>> >> > The reason we introduce the "user align" is to separate this kind of >>>>> >> > case >>>>> >> > from the generic aggregate. So that we can do the two things well: >>>>> >> > If user specifies an alignment, we follow the size. Otherwise, the >>>>> >> > compiler >>>>> >> > can decide what's the proper alignment. >>>>> >> > >>>>> >> > 在 2011年8月25日 下午1:57,Mike Murphy <mmur...@nvidia.com>写道: >>>>> >> >> >>>>> >> >> So Aggregate_Alignment is a settable option (defaults to 16 in some >>>>> >> >> targets). What if you compile with -TENV:align_aggregates=8, or >>>>> >> >> don't >>>>> >> >> default it to 16? >>>>> >> >> >>>>> >> >> -----Original Message----- >>>>> >> >> From: 朱庆 [mailto:zqing1...@gmail.com] >>>>> >> >> Sent: Wednesday, August 24, 2011 10:53 PM >>>>> >> >> To: Mike Murphy >>>>> >> >> Cc: Sun Chan; open64-devel@lists.sourceforge.net >>>>> >> >> Subject: Re: [Open64-devel] Code Review request for bug832[wgen] >>>>> >> >> >>>>> >> >> The alignment is correct in .B file, but in Adjusted_Alignment there >>>>> >> >> are following code to modify the align. In our case we do not want >>>>> >> >> this happen. >>>>> >> >> else { >>>>> >> >> align = MAX(align, Aggregate_Alignment); >>>>> >> >> } >>>>> >> >> >>>>> >> >> Best wishes >>>>> >> >> zhuqing >>>>> >> >> 在 2011年8月25日 下午12:28,Mike Murphy <mmur...@nvidia.com> 写道: >>>>> >> >> > The alignment is stored in the ty_idx (see TY_align), and then >>>>> >> >> > there >>>>> >> >> > are >>>>> >> >> > routines like Adjusted_Alignment in stblock that can modify it. I >>>>> >> >> > suspect >>>>> >> >> > the problem here is that the alignment is being put on the object >>>>> >> >> > rather >>>>> >> >> > than the type, and then is lost (but should still be possible, >>>>> >> >> > because the >>>>> >> >> > TY_align is like qualifiers that can vary from the base type). >>>>> >> >> > Does >>>>> >> >> > the >>>>> >> >> > alignment show up properly in the intermediate .B file? >>>>> >> >> > >>>>> >> >> > -----Original Message----- >>>>> >> >> > From: Sun Chan [mailto:sun.c...@gmail.com] >>>>> >> >> > Sent: Wednesday, August 24, 2011 7:51 PM >>>>> >> >> > To: 朱庆 >>>>> >> >> > Cc: open64-devel@lists.sourceforge.net >>>>> >> >> > Subject: Re: [Open64-devel] Code Review request for bug832[wgen] >>>>> >> >> > >>>>> >> >> > The reason I asked for the file is that I think there has to be >>>>> >> >> > some >>>>> >> >> > alignment attribute somewhere. I am sure data alignment has been >>>>> >> >> > dealt >>>>> >> >> > with in the compiler. That it is due to user, or just language >>>>> >> >> > attribute might be irrelevant from compiler point of view. >>>>> >> >> > >>>>> >> >> > Mike or Murthy, >>>>> >> >> > Do you remember where alignment is handled? I only found Alignment >>>>> >> >> > field in BLK of the symtab_defs.h >>>>> >> >> > >>>>> >> >> > Sun >>>>> >> >> > >>>>> >> >> > 2011/8/25 朱庆 <zqing1...@gmail.com>: >>>>> >> >> >> Hi Sun, >>>>> >> >> >> >>>>> >> >> >> Attached symtab_defs.h. >>>>> >> >> >> >>>>> >> >> >> Thanks >>>>> >> >> >> zhuqing >>>>> >> >> >> 2011/8/24 Sun Chan <sun.c...@gmail.com>: >>>>> >> >> >>> can you send me the full symtab_defs.h? >>>>> >> >> >>> Sun >>>>> >> >> >>> >>>>> >> >> >>> On Wed, Aug 24, 2011 at 4:56 PM, 朱庆 <zqing1...@gmail.com> wrote: >>>>> >> >> >>>> Hi all, >>>>> >> >> >>>> >>>>> >> >> >>>> Can gatekeeper help review following fix for bug832? >>>>> >> >> >>>> https://bugs.open64.net/show_bug.cgi?id=832 >>>>> >> >> >>>> >>>>> >> >> >>>> small case, a.c: >>>>> >> >> >>>> struct obs_kernel_param { >>>>> >> >> >>>> const char *str; >>>>> >> >> >>>> }; >>>>> >> >> >>>> >>>>> >> >> >>>> const char str1[] = "acpi_parse_apic_instance="; >>>>> >> >> >>>> const char str2[] = "acpi_os_name"; >>>>> >> >> >>>> struct obs_kernel_param var1 >>>>> >> >> >>>> __attribute__ ((aligned ((sizeof (long))))) = >>>>> >> >> >>>> {str1}; >>>>> >> >> >>>> >>>>> >> >> >>>> struct obs_kernel_param var2 >>>>> >> >> >>>> __attribute__ ((aligned ((sizeof (long))))) = >>>>> >> >> >>>> {str2}; >>>>> >> >> >>>> >>>>> >> >> >>>> when compile with opencc, nm a.o >>>>> >> >> >>>> 0000000000000000 D var1 >>>>> >> >> >>>> 0000000000000010 D var2 >>>>> >> >> >>>> compile with gcc, nm a.o >>>>> >> >> >>>> 0000000000000000 D var1 >>>>> >> >> >>>> 0000000000000008 D var2 >>>>> >> >> >>>> the offset of var1 and var2 are different, the problem with >>>>> >> >> >>>> opencc >>>>> >> >> >>>> is >>>>> >> >> >>>> :fixed align attribute does not work, this may cause some >>>>> >> >> >>>> problems >>>>> >> >> >>>> when mix link two files with opencc and gcc. >>>>> >> >> >>>> >>>>> >> >> >>>> The fix is to add a new ST flag to record user_defined_align. >>>>> >> >> >>>> >>>>> >> >> >>>> Thanks >>>>> >> >> >>>> zhuqing >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>>> ------------------------------------------------------------------------------ >>>>> >> >> >>>> EMC VNX: the world's simplest storage, starting under $10K >>>>> >> >> >>>> The only unified storage solution that offers unified >>>>> >> >> >>>> management >>>>> >> >> >>>> Up to 160% more powerful than alternatives and 25% more >>>>> >> >> >>>> efficient. >>>>> >> >> >>>> Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev >>>>> >> >> >>>> _______________________________________________ >>>>> >> >> >>>> Open64-devel mailing list >>>>> >> >> >>>> Open64-devel@lists.sourceforge.net >>>>> >> >> >>>> https://lists.sourceforge.net/lists/listinfo/open64-devel >>>>> >> >> >>>> >>>>> >> >> >>>> >>>>> >> >> >>> >>>>> >> >> >> >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > ------------------------------------------------------------------------------ >>>>> >> >> > EMC VNX: the world's simplest storage, starting under $10K >>>>> >> >> > The only unified storage solution that offers unified management >>>>> >> >> > Up to 160% more powerful than alternatives and 25% more efficient. >>>>> >> >> > Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev >>>>> >> >> > _______________________________________________ >>>>> >> >> > Open64-devel mailing list >>>>> >> >> > Open64-devel@lists.sourceforge.net >>>>> >> >> > https://lists.sourceforge.net/lists/listinfo/open64-devel >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > ----------------------------------------------------------------------------------- >>>>> >> >> > This email message is for the sole use of the intended >>>>> >> >> > recipient(s) >>>>> >> >> > and >>>>> >> >> > may contain >>>>> >> >> > confidential information. Any unauthorized review, use, >>>>> >> >> > disclosure >>>>> >> >> > or >>>>> >> >> > distribution >>>>> >> >> > is prohibited. If you are not the intended recipient, please >>>>> >> >> > contact >>>>> >> >> > the sender by >>>>> >> >> > reply email and destroy all copies of the original message. >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > >>>>> >> >> > ----------------------------------------------------------------------------------- >>>>> >> >> > >>>>> >> >> >>>>> >> >> >>>>> >> >> >>>>> >> >> ------------------------------------------------------------------------------ >>>>> >> >> EMC VNX: the world's simplest storage, starting under $10K >>>>> >> >> The only unified storage solution that offers unified management >>>>> >> >> Up to 160% more powerful than alternatives and 25% more efficient. >>>>> >> >> Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev >>>>> >> >> _______________________________________________ >>>>> >> >> Open64-devel mailing list >>>>> >> >> Open64-devel@lists.sourceforge.net >>>>> >> >> https://lists.sourceforge.net/lists/listinfo/open64-devel >>>>> >> > >>>>> >> > >>>>> >> > >>>>> >> > -- >>>>> >> > Regards, >>>>> >> > Lai Jian-Xin >>>>> >> > >>>>> >> > >>>>> >> > >>>>> >> > ------------------------------------------------------------------------------ >>>>> >> > EMC VNX: the world's simplest storage, starting under $10K >>>>> >> > The only unified storage solution that offers unified management >>>>> >> > Up to 160% more powerful than alternatives and 25% more efficient. >>>>> >> > Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev >>>>> >> > _______________________________________________ >>>>> >> > Open64-devel mailing list >>>>> >> > Open64-devel@lists.sourceforge.net >>>>> >> > https://lists.sourceforge.net/lists/listinfo/open64-devel >>>>> >> > >>>>> >> > >>>>> > >>>>> > >>>>> > >>>>> > -- >>>>> > Regards, >>>>> > Lai Jian-Xin >>>>> > >>>> >>>> >>>> >>>> -- >>>> Regards, >>>> Lai Jian-Xin >>>> >>>> ------------------------------------------------------------------------------ >>>> EMC VNX: the world's simplest storage, starting under $10K >>>> The only unified storage solution that offers unified management >>>> Up to 160% more powerful than alternatives and 25% more efficient. >>>> Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev >>>> _______________________________________________ >>>> Open64-devel mailing list >>>> Open64-devel@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/open64-devel >>>> >>>> >>> >> >
------------------------------------------------------------------------------ EMC VNX: the world's simplest storage, starting under $10K The only unified storage solution that offers unified management Up to 160% more powerful than alternatives and 25% more efficient. Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev _______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel