Bug 30695

Summary: uint32_t -> uint16_t without warrnings
Product: gcc Reporter: Evgeniy Dushistov <dushistov>
Component: cAssignee: Not yet assigned to anyone <unassigned>
Status: RESOLVED FIXED    
Severity: enhancement CC: gcc-bugs
Priority: P3    
Version: unknown   
Target Milestone: ---   
Host: Target:
Build: Known to work:
Known to fail: Last reconfirmed:

Description Evgeniy Dushistov 2007-02-03 17:40:03 UTC
$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;
                     ^
Comment 1 Andrew Pinski 2007-02-03 20:41:59 UTC
I think this has already been fixed on the trunk with the new -Wconversion behaviors:
http://gcc.gnu.org/wiki/NewWconversion
Comment 2 Evgeniy Dushistov 2007-02-03 21:15:46 UTC
(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.