Displaying 4 results from an estimated 4 matches for "mri_mustref".
2017 Oct 10
4
Expose aliasing information in getModRefInfo (or viceversa?)
...ive) and then preserving it, so the opposite: start lattice at
> bottom, set to top.
>
> What I was trying, that *somewhat* made sense:
> enum ModRefInfo {
> MRI_NoModRef = 0,
> MRI_Ref = 1,
> MRI_Mod = 2,
> MRI_ModRef = MRI_Ref | MRI_Mod,
> MRI_Must = 4,
> MRI_MustRef = MRI_Ref | MRI_Must,
> MRI_MustMod = MRI_Mod | MRI_Must,
> MRI_MustModRef = MRI_ModRef | MRI_Must
> };
> // + shift values in FunctionModRefLocation to 8, 16, 32.
>
> Recursive masking of MRI_Ref/MRI_Mod would get replaced by
> MRI_MustRef/MRI_MustMod.
> But the top of...
2017 Nov 28
1
Expose aliasing information in getModRefInfo (or viceversa?)
...sion
>> which makes more sense to me.
>>
>>
>>
>> Current patch has:
>>
>> enum ModRefInfo {
>> MRI_NoModRef = 0,
>> MRI_Ref = 1,
>> MRI_Mod = 2,
>> MRI_ModRef = MRI_Ref | MRI_Mod,
>> MRI_Must = 4,
>>
>> MRI_MustRef = MRI_Ref | MRI_Must,
>>
>> MRI_MustMod = MRI_Mod | MRI_Must,
>>
>> MRI_MustModRef = MRI_ModRef | MRI_Must
>> };
>>
>>
>>
>> Proposed change:
>>
>> enum ModRefInfo {
>>
>> MRI_Must = 0,
>>
>> MRI_MustR...
2017 Oct 10
2
Expose aliasing information in getModRefInfo (or viceversa?)
...s setting it occasionally (since May is
conservative) and then preserving it, so the opposite: start lattice at
bottom, set to top.
What I was trying, that *somewhat* made sense:
enum ModRefInfo {
MRI_NoModRef = 0,
MRI_Ref = 1,
MRI_Mod = 2,
MRI_ModRef = MRI_Ref | MRI_Mod,
MRI_Must = 4,
MRI_MustRef = MRI_Ref | MRI_Must,
MRI_MustMod = MRI_Mod | MRI_Must,
MRI_MustModRef = MRI_ModRef | MRI_Must
};
// + shift values in FunctionModRefLocation to 8, 16, 32.
Recursive masking of MRI_Ref/MRI_Mod would get replaced by
MRI_MustRef/MRI_MustMod.
But the top of the lattice is still MRI_ModRef.
While...
2017 Oct 10
2
Expose aliasing information in getModRefInfo (or viceversa?)
I'm trying to understand what is the result we'd seek in the example
in D38569 (pasting here for quick access)
double f(double a)
{
double b;
double c,d;
double (*fp) (double) __attribute__ ((const));
/* Partially redundant call */
if (a < 2.0)
{
fp = sin;
c = fp (a);
}
else
{
c = 1.0;
fp = cos;
}
d = fp (a);