Carl Worth
c42e64099b
preprocessor: Initialize a potentially uninitialized variable.
...
My current reading of the relevant static functions suggests that last
is never used without being uninitialized, (we only use it if the
expansion function returned non-NULL and the expansion functions
always set it before returning non-NULL).
Apparently gcc isn't coming to the same conclusion. Initializing this
to NULL nicely quites gcc and will guarantee a nice, early segfault if
my anaylsis turns out to be wrong.
2010-06-23 16:13:31 -07:00
Carl Worth
726faddda2
preprocessor: Remove dead code _token_list_length
...
As gcc noticed, this function is not currently being used. Good-bye.
2010-06-23 16:13:31 -07:00
Carl Worth
45cbc08438
preprocessor: Remove dead code _string_list_append_list
...
As gcc noticed, this function is not currently being used. Good-bye.
2010-06-23 16:13:31 -07:00
Kenneth Graunke
1b85c46bcf
glcpp: Initialize error state.
2010-06-21 13:55:12 -07:00
Kenneth Graunke
332fc47dc0
glcpp: Accept #elif without an expression if the expression doesn't matter.
...
Issue a warning. nVidia's compiler seems to accept this; apparently
GCC < 4.4 did as well: http://gcc.gnu.org/gcc-4.4/porting_to.html
2010-06-21 12:41:05 -07:00
Kenneth Graunke
26e761edb2
glcpp: Rework handling of "defined" operator.
...
It's now done in the grammar, and as a result, can easily handle
parenthesis. defined ( identifier ) is now supported.
Fixes glcpp/tests/065-if-defined-parens.c.
2010-06-21 12:41:05 -07:00
Kenneth Graunke
6587574354
glcpp: Ignore junk tokens at end of #ifdef/#ifndef (with warning)
...
Both nVidia's compiler and GCC accept this.
Fixes CorrectPreprocess11.frag.
2010-06-21 12:41:05 -07:00
Kenneth Graunke
33eaa3e0b3
glcpp: Rename "errors" to "info_log."
...
Eventually, we'll want to be be able to print out warnings as well.
2010-06-21 12:38:39 -07:00
Kenneth Graunke
e8e93a4543
glcpp: Remove calls to exit().
...
Calling exit() would be really bad once integrated into mesa. Even in
the standalone binary, we want to print the error log first.
Since each case already flags an error, compilation will still fail,
but it may go on (with something fudged) and generate more errors.
2010-06-21 12:31:03 -07:00
Kenneth Graunke
0774523d18
glcpp: Add line locations to "Unterminated #if" error message.
2010-06-21 12:31:03 -07:00
Kenneth Graunke
8a132aa08b
glcpp: Add line locations to various mismatched #if error messages.
2010-06-21 12:31:03 -07:00
Kenneth Graunke
dcdf62f1c6
glcpp: Add line locations to "reserved name" error messages.
2010-06-21 12:31:03 -07:00
Kenneth Graunke
ca9e5fce25
glcpp: Print locations in error messages where possible.
2010-06-21 12:31:03 -07:00
Kenneth Graunke
f1e6c069fa
glcpp: Introduce new glcpp_error function.
2010-06-21 12:31:02 -07:00
Kenneth Graunke
b78c9ddfbf
glcpp: Set locations on tokens.
2010-06-21 11:31:56 -07:00
Kenneth Graunke
465e03ee07
glcpp: Add plumbing to support line locations.
2010-06-21 11:31:55 -07:00
Kenneth Graunke
f70f60739a
glcpp: Add %error-verbose.
2010-06-21 11:31:55 -07:00
Kenneth Graunke
e0e429fca3
glcpp: Build a reentrant parser.
2010-06-21 11:31:55 -07:00
Kenneth Graunke
739ba06680
glcpp: Complain about unrecognized directives.
2010-06-21 11:31:55 -07:00
Kenneth Graunke
4c8a1af811
glcpp: Output to a buffer and error log rather than directly printing.
...
In the standalone case, simply print the buffers when done.
2010-06-21 11:25:50 -07:00
Kenneth Graunke
0656f6b875
glcpp: Fix a case of == where = probably ought to be.
...
Caught by a GCC warning.
2010-06-21 11:25:50 -07:00
Kenneth Graunke
6f510a49d2
Merge Carl's preprocessor into the glcpp subdirectory.
2010-06-21 11:22:11 -07:00