On Sat, Jun 25, 2016 at 6:25 PM, Jeffrey Walton <noloa...@gmail.com> wrote:
> On Sat, Jun 25, 2016 at 2:01 PM, Andrew Fuller via cfe-users > <cfe-users@lists.llvm.org> wrote: > > I'm trying to understand an issue reported by Clang's static analysis > tool. > > The code below demonstrates the issue: > > > > $ cat problem.c > > #include <stdint.h> > > > > int main() { > > #if VARIANT==1 > > uint32_t data = 0xdeadbeef; > > uint8_t* byte = (uint8_t*)&data; > > uint8_t value = byte[0]; > > #elif VARIANT==2 > > uint32_t data = 0xdeadbeef; > > uint8_t* byte = (uint8_t*)&data; > > uint8_t value = byte[1]; > > #elif VARIANT==3 > > uint32_t data[1] = {0xdeadbeef}; > > uint8_t* byte = (uint8_t*)&data[0]; > > uint8_t value = byte[0]; > > #elif VARIANT==4 > > uint32_t data[1] = {0xdeadbeef}; > > uint8_t* byte = (uint8_t*)&data[0]; > > uint8_t value = byte[1]; > > #else > > #error "Define VARIANT={1,2,3,4}" > > #endif > > return value; > > } > > > > I recall seeing this before, but I don't recall if its valid C: > > uint8_t* byte = (uint8_t*)&data; > uint8_t value = byte[0]; > > Are you getting other compiler warnings with it? If not, try -Wall -Wextra. > > Jeff > Thanks for the reply, Jeff. Clang 3.8 is warning-free with -Wall and -Weverything going through all 4 code paths (VARIANT set to 1-4). Ditto for gcc 5.2.1 with -Wall -Wextra. Only scan-build grumbles. -Andrew
_______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users