On 07/01/14 21:25, Vittorio Giovara wrote:
> On Tue, Jan 7, 2014 at 7:58 PM, Kostya Shishkov
> <[email protected]> wrote:
>> On Tue, Jan 07, 2014 at 02:25:06PM +0100, Luca Barbato wrote:
>>> Apparently gcc-4.8.2 miscompiles enums resulting in a lucky fpe soon
>>> after it.
>>>
>>> Passing the enum value as integer makes the ftype == FT_PPC condition
>>> evaluates correctly.
>>> ---
>>>
>>> I did not try to reduce a testcase to send it to gcc yet, volunteers 
>>> willing to check the case and report to gcc are welcome to beat me at it.
>>>
>>> clang does not show the problem.
>>>
>>>  libavcodec/twinvq.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/libavcodec/twinvq.c b/libavcodec/twinvq.c
>>> index 3006e9f..6d0a0ec 100644
>>> --- a/libavcodec/twinvq.c
>>> +++ b/libavcodec/twinvq.c
>>> @@ -996,7 +996,7 @@ static void linear_perm(int16_t *out, int16_t *in, int 
>>> n_blocks, int size)
>>>          out[i] = block_size * (in[i] % n_blocks) + in[i] / n_blocks;
>>>  }
>>>
>>> -static av_cold void construct_perm_table(TwinContext *tctx,enum FrameType 
>>> ftype)
>>> +static av_cold void construct_perm_table(TwinContext *tctx, int ftype)
>>>  {
>>>      int block_size;
>>>      const ModeTab *mtab = tctx->mtab;
>>> --
>>
>> fine with me (and makes me wonder why I prefer not to use enums as
>> variables/arguments)
> 
> enum as arguments are used everywhere in the sources, any idea about
> what causes the actual miscompilation here?

No clue yet, you are welcome to compile the file and compare the
disassembly while I keep hacking mxf =)

lu


_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to