Displaying 3 results from an estimated 3 matches for "a23g".
Did you mean:
a23
2011 Oct 01
1
[LLVMdev] Tablegen: RegisterInfoEmitter.cpp
...tinue is reached. Data[2] is then less than RHS.Data[2], so a12 < a1b. But in the case for a22 and a1b, we get the opposite, since '2'!='1', and 22 is more digits than 1. So we get a12 < a1b < a22, which is incorrect, because a12==a22.
My problem was with these registers: a23g, a2g and a3g. When I renamed a23g to aa23g, it worked. Since '2'=='2', the problem was that a23g<a2g.
I think the fix is to first check for two digits, and move the equality comparison to after this. Then a2g < a3g < a23g:
/// compare_numeric - Compare strings, handle emb...
2011 Sep 30
0
[LLVMdev] Tablegen: RegisterInfoEmitter.cpp
On Sep 30, 2011, at 8:29 AM, Jonas Paulsson wrote:
> The conclusion is that the StringRef::compare_numeric() is not deterministic
Thanks for tracking this down.
I believe we have a bug in compare_numeric() causing it to be non-transitive sometimes. It is supposed to provide a total ordering of strings. Can you find the bug?
/jakob
-------------- next part --------------
An HTML attachment
2011 Sep 30
3
[LLVMdev] Tablegen: RegisterInfoEmitter.cpp
...[i].TheDef] = i;
NumAliases += RegisterAliases[Regs[i].TheDef].size();
}
runs. Only, now there are duplicates in the RegisterAliases map for the same Regs[i]-Record.
This lead to duplicate output of the REG_Overlaps lists:
error: redefinition of 'const unsigned int llvm::<unnamed>::a23g_Overlaps []'
/local/scratch/ejonpan/llvm/build/lib/Target/Hubble/HubbleGenRegisterInfo.inc:2700: error: 'const unsigned int llvm::<unnamed>::a23g_Overlaps [4]'
previously defined here
/local/scratch/ejonpan/llvm/build/lib/Target/Hubble/HubbleGenRegisterInfo.inc:2732: error: redef...