ref: da3fdf4fee4a266d3e69ea569659cb0268cb7d28
parent: bfaf7a4d88aefd1c269ae83563de4b78511cc648
author: FRIGN <dev@frign.de>
date: Tue May 17 12:27:50 EDT 2016
Emit function prototypes so we actually know which functions we are actually calling in the IR. Also update the tests accordingly. "Mientras se gana algo no se pierde nada." - Miguel de Cervantes Saavedra
--- a/cc1/decl.c
+++ b/cc1/decl.c
@@ -847,6 +847,7 @@
* against GLOBALCTX+1
*/
if (curctx != GLOBALCTX+1 || yytoken == ';') {
+ emit(ODECL, sym);
/*
* avoid non used warnings in prototypes
*/
--- a/cc1/tests/test001.c
+++ b/cc1/tests/test001.c
@@ -3,6 +3,7 @@
description: Basic hello world test
error:
output:
+X4 I F "printf
G6 I F "main
{
\
--- a/cc1/tests/test029.c
+++ b/cc1/tests/test029.c
@@ -6,8 +6,10 @@
moment f will not be expanded because the macro definition is
a function alike macro, and in this case there is no arguments.
error:
-test029.c:34: error: redefinition of 'f1'
-test029.c:35: error: 'f' undeclared
+test029.c:31: warning: expression without side effects
+test029.c:36: error: redefinition of 'f1'
+test029.c:37: error: 'f' undeclared
+test029.c:37: warning: expression without side effects
output:
G3 I F "f1
{
--- a/cc1/tests/test034.c
+++ b/cc1/tests/test034.c
@@ -3,10 +3,11 @@
name: TEST034
description: Basic test for incomplete structures
error:
-test034.c:44: error: declared variable 'bar' of incomplete type
-test034.c:44: error: redeclaration of 'bar'
+test034.c:45: error: declared variable 'bar' of incomplete type
+test034.c:45: error: redeclaration of 'bar'
output:
X3 S2 "x
+X5 I F "foo
G6 I F "main
{
\
--- a/cc1/tests/test038.c
+++ b/cc1/tests/test038.c
@@ -3,12 +3,13 @@
name: TEST038
description: Basic test for tentative definitions
error:
-test038.c:43: error: redeclaration of 'x'
+test038.c:44: error: redeclaration of 'x'
output:
G1 I "x
G1 I "x (
#I0
)
+X3 I F "main
G5 P F "foo
{
\
--- a/cc1/tests/test041.c
+++ b/cc1/tests/test041.c
@@ -2,12 +2,13 @@
name: TEST041
description: Test for bug parsing ternary operators
error:
-test041.c:48: error: type mismatch in conditional expression
-test041.c:48: error: incompatible types when assigning
-test041.c:49: error: used struct/union type value where scalar is required
-test041.c:50: warning: 'i' defined but not used
-test041.c:50: warning: 'foo' defined but not used
-test041.c:50: warning: 's' defined but not used
+test041.c:49: error: type mismatch in conditional expression
+test041.c:49: error: incompatible types when assigning
+test041.c:50: error: used struct/union type value where scalar is required
+test041.c:50: warning: expression without side effects
+test041.c:51: warning: 'i' defined but not used
+test041.c:51: warning: 'foo' defined but not used
+test041.c:51: warning: 's' defined but not used
output:
G2 I F "main
{
--- a/cc1/tests/test042.c
+++ b/cc1/tests/test042.c
@@ -2,11 +2,12 @@
name: TEST042
description: Test for bug parsing ternary operators
error:
-test042.c:17: error: bad type convertion requested
+test042.c:18: error: bad type convertion requested
output:
G2 I F "main
{
\
+X4 0 F "f
*/
int