https://bugs.llvm.org/show_bug.cgi?id=40196
Bug ID: 40196
Summary: printf bug when arguments from a member of union
Product: clang
Version: 6.0
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: -New Bugs
Assignee: unassignedclangb...@nondot.org
Reporter: met...@x-legend.com.tw
CC: htmldevelo...@gmail.com, llvm-bugs@lists.llvm.org,
neeil...@live.com, richard-l...@metafoo.co.uk
Hi
We found a bug in printf.
It may have included below
1. 64bit union
2. a bit number in union
3. out of register count (x64-ABI limit)
#include <stdio.h>
union U {
unsigned long long Value;
struct {
unsigned long long Data:2;
};
};
int main ()
{
int a = 0;
U b = { 0 };
printf ("%d, %llu\n", a, b.Data);
printf ("%d, %d, %llu\n", a, a, b.Data);
printf ("%d, %d, %d, %llu\n", a, a, a, b.Data);
printf ("%d, %d, %d, %d, %llu\n", a, a, a, a, b.Data);
printf ("%d, %d, %d, %d, %d, %llu\n", a, a, a, a, a, b.Data);
printf ("%d, %d, %d, %d, %d, %d, %llu\n", a, a, a, a, a, a, b.Data);
printf ("%d, %d, %d, %d, %d, %d, %d, %llu\n", a, a, a, a, a, a, a, b.Data);
printf ("%d, %d, %d, %d, %d, %d, %d, %d, %llu\n", a, a, a, a, a, a, a, a,
b.Data);
printf ("%d, %d, %d, %d, %d, %d, %d, %d, %d, %llu\n", a, a, a, a, a, a, a,
a, a, b.Data);
return 0;
}
metora@pro-debian:$ clang-6.0 1.cc
metora@pro-debian:$ ./a.out
0, 0
0, 0, 0
0, 0, 0, 0
0, 0, 0, 0, 0
0, 0, 0, 0, 0, 140724603453440
0, 0, 0, 0, 0, 0, 140724603453440
0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
How to fix or prevent it?
Thank you
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs