> 3. The big one: Getting the integer(long long) and float(long double) > suffixes that are not used by gcc out of the preprocessor. Then we can > build the calls.
Just my two cents: Add an output parameter to the function "cpp_classify_number()" (libcpp/expr.c) to get the user-defined suffix. It should be optional, so that it is ignored when not needed. unsigned int -cpp_classify_number (cpp_reader *pfile, const cpp_token *token) +cpp_classify_number (cpp_reader *pfile, const cpp_token *token, char **suffix) //exposition only! Then in the function "c_lex_with_flags()" (c-family/c-lex.c) retrieve the suffix and pass it on to the function "interpret_integer()" / "interpret_float()", that should add an input parameter accordingly. The function "interpret_{integer,float}()" calls "build_int_cst_wide()" / "build_real()" to build the constant. Then you can build a tree for the identifier (with "get_identifier()", perhaps) and attach it somehow to the constant. You may consider creating a new TREE type for that... I'm afraid that you have quite some job here... Best regards. Rodrigo