Open
Description
When using --dump-c together with inlining the resulting C program might not compile due to multiple definitions of a variable:
inline void func1() {
int i;
}
inline void func2() {
int i;
}
void main() {
func1();
func2();
}
--escape-analysis to trigger partial inlining:
goto-cc main.c
goto-instrument --escape-analysis --dump-c a.out
Dumped C program:
// func1
// file main.c line 2
inline void func1();
// func2
// file main.c line 6
inline void func2();
// func1
// file main.c line 2
inline void func1()
{
signed int i;
}
// func2
// file main.c line 6
inline void func2()
{
signed int i;
}
// main
// file main.c line 10
void main()
{
signed int i;
signed int i;
}
gcc yields:
out.c: In function ‘main’:
out.c:28:14: error: redeclaration of ‘i’ with no linkage
signed int i;
^
out.c:27:14: note: previous declaration of ‘i’ was here
signed int i;