https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106582

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
>
080157fe:   movs    r3, #0
08015800:   ldr.w   r2, [r9, #20]
08015804:   str     r2, [r3, #12]

This is doing a store at the address 12 which is invalid normally.
I suspect for your code you need -fno-delete-null-pointer-checks .

Or you are missing a null pointer check.

The code does:
   if (pQueryChunk && ioIsValid(pRawChunk))
   {
    pQueryChunk->pSrcDriver = pRawChunk->pSrcDriver;
   }
   else
   {
    if (pParser)
    {
     pQueryChunk->pSrcDriver = pParser->pSourceDriver;
    }
   }

But the store for "pQueryChunk->pSrcDriver" is not checked to see if
pQueryChunk was a non-null pointer before doing the store after the check that
pParser was a non-null pointer.


That is I don't think this is a bug in GCC.

Reply via email to