looks good to me.
Please add a space after "//"
Personally, I prefer if you add comment instead of referring to bug number.
This is not representative of gatekeepers though
Sun
On Thu, Nov 24, 2011 at 10:21 PM, Gang Yu <yugang...@gmail.com> wrote:
> Hi,
>
> Could a gatekeeper please help review the fix for bug362
> http://bugs.open64.net/show_bug.cgi?id=362?
>
> This is an old linux kernel build bug, but it does still exist today.
> Source:
>
> static inline void cpuid_count(int op, int count, int *eax, int *ebx, int
> *ecx,
> int *edx)
> {
> __asm__("cpuid"
> : "=a" (*eax),
> "=b" (*ebx),
> "=c" (*ecx),
> "=d" (*edx)
> : "0" (op), "c" (count));
> }
> union _cpuid4_leaf_ebx {
> struct {
> unsigned int coherency_line_size:12;
> unsigned int physical_line_partition:10;
> unsigned int ways_of_associativity:10;
> } split;
> int full;
> };
>
> static int cpuid4_cache_lookup(int index)
> {
> union _cpuid4_leaf_ebx ebx;
> cpuid_count(4, 4, 0, &ebx.full, 0, 0);
> return ebx.split.physical_line_partition ;
> }
> void foo(){
> cpuid4_cache_lookup(1);
> }
> ### Assertion failure at line 638 of
> /fc/proj/ctires/open64/o64guru/src/Thu/trunk/osprey/be/opt/opt_verify.cxx:
> ### Compiler Error in file bug362.c during Global Optimization -- Verify
> CODEMAP phase:
> ### STMTREP::Verify_CODEMAP: inconsistent store operator with respect to
> bitfields
>
> Analyse:
> when control go the assertion, we get the assertion stmt:
> > LDID I4 I4 sym13v3 -3 ty=1026 <u=1 cr32> flags:0x10 b=-1
> >OPR_STID I4 I4 sym16v3 0 <u=1 cr37> b=-1 flags:0x2 pj2 Sid-1
>
> while its Lhs() can be printed as:
> >LDBITS I4 I4 sym16v3 0 ty=1026 <u=1 cr37> flags:0x100 b=-1
>
> sym16 is ebx in the source code, this is wrong, we can't STID a symbol
> with bit_field_valid propertie.
> sym16 has a bit_size 10, Lhs() is right, we can not change the OP for the
> stmt.
>
> Examine the source code, we find control follows the below path for sym16v3
>
> in opt_htable.cxx
> 4178 (opr == OPR_ISTORE &&
> 4179 (opt_stab->Aux_stab_entry(vaux)->Bit_size() == 0 ||
> 4180 opt_stab->Aux_stab_entry(vaux)->Field_id() ==
> WN_field_id(Wn())) ||
> 4181 opr == OPR_ISTBITS &&
> 4182 opt_stab->Aux_stab_entry(vaux)->Bit_ofst() ==
> WN_bit_offset(Wn()) &&
> 4183 opt_stab->Aux_stab_entry(vaux)->Bit_size() ==
> WN_bit_size(Wn()))) {
> 4184 VER_STAB_ENTRY *vse =
> opt_stab->Ver_stab_entry(cnode->Result());
> 4185 base_ccr.Tree()->DecUsecnt(); // for the LDA
> coderep
> 4186 Is_True(! vse->Real_use() ||
> 4187 vse->Coderep() == NULL && vse->Type() == CHI_STMT,
> 4188 ("Error in ISTORE to STID folding in htable"));
> 4189
> 4190 Set_lhs( htable->Add_def(vaux, vse->Version(), this,
> 4191 dtyp, dsctyp,
> 4192
> opt_stab->St_ofst(vaux)/*base_ccr.Scale()*/,
> 4193 TY_pointed(WN_ty(Wn())),
> 4194 WN_field_id(Wn()), TRUE) );
> 4218 Set_op(OPCODE_make_op(opr == OPR_ISTORE ? OPR_STID :
> OPR_STBITS, MTYPE_V, dsctyp));
> 4219 opt_stab->Push_coderep(vaux, Lhs());
> 4220 htable->Inc_istorefolds();
> 4179 (opt_stab->Aux_stab_entry(vaux)->Bit_size() == 0 ||
> 4180 opt_stab->Aux_stab_entry(vaux)->Field_id() == WN_field_id(Wn())
> || should be a typo.
>
> Suggested patch:
>
> --- a/osprey/be/opt/opt_htable.cxx
> +++ b/osprey/be/opt/opt_htable.cxx
> @@ -4176,7 +4176,7 @@ STMTREP::Enter_lhs(CODEMAP *htable, OPT_STAB
> *opt_stab, COPYPROP *copyprop)
> opt_stab->Aux_stab_entry(vaux)->Byte_size() * 8 ==
> MTYPE_size_min(_desc) &&
> (opr == OPR_ISTORE &&
> - (opt_stab->Aux_stab_entry(vaux)->Bit_size() == 0 ||
> + (opt_stab->Aux_stab_entry(vaux)->Bit_size() == 0 &&
> //bug362 open64.net
> opt_stab->Aux_stab_entry(vaux)->Field_id() ==
> WN_field_id(Wn())) ||
> opr == OPR_ISTBITS &&
> could a gatekeeper please help a review? Thanks
>
> Regards
> Gang
>
>
> ------------------------------------------------------------------------------
> All the data continuously generated in your IT infrastructure
> contains a definitive record of customers, application performance,
> security threats, fraudulent activity, and more. Splunk takes this
> data and makes sense of it. IT sense. And common sense.
> http://p.sf.net/sfu/splunk-novd2d
> _______________________________________________
> Open64-devel mailing list
> Open64-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/open64-devel
>
>
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure
contains a definitive record of customers, application performance,
security threats, fraudulent activity, and more. Splunk takes this
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Open64-devel mailing list
Open64-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open64-devel