$cat gcc-wrap.c #include <stdint.h> #include <stdio.h> int main() { uint32_t a = 1 << 17; uint16_t b = a; printf("a: %u, b: %u\n", (unsigned)a, (unsigned)b); return 0; } $gcc -Wall -Wextra -Wconversion -pedantic gcc-wrap.c no warrnings $gcc --version gcc (GCC) 4.1.1 for example: $icc --version iccbin (ICC) 9.1 20060706 $icc -Wall gcc-wrap.c gcc-wrap.c(7): remark #810: conversion from "uint32_t={unsigned int}" to "uint16_t={unsigned short}" may lose significant bits uint16_t b = a; ^
I think this has already been fixed on the trunk with the new -Wconversion behaviors: http://gcc.gnu.org/wiki/NewWconversion
(In reply to comment #1) > I think this has already been fixed on the trunk with the new -Wconversion > behaviors: > http://gcc.gnu.org/wiki/NewWconversion > Thaks for reply, I hope to see this feature in near future.