https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100174
Bug ID: 100174 Summary: Binary floating-point conversion under source-gcc/gcc/real.[c\h] test on x86-64 Product: gcc Version: 9.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: translation Assignee: unassigned at gcc dot gnu.org Reporter: 608410104 at alum dot ccu.edu.tw Target Milestone: --- For example: float a = 0.3333 I don't know why gcc using clear_significand_below(real.c) function to clear remaining bits in sig[SIGSZ-1]. Why not just only truncated it by it need. > Before clear sig[SIGSZ-1] = 01010101 01001100 10011000 01011111 00000110 > 11110110 10010100 0100011 > After clear sig[SIGSZ-1] = 01010101 01001100 10011000 00000000 00000000 > 00000000 00000000 0000000 Sorry if I am not clear, I will elaborate if this is still unclear.