diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9a7c599408f1..caf69f55c341 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2009-06-18 Manuel López-Ibáñez + + * gcc.dg/cpp/arith-3.c: Add column info. + 2009-06-18 Sandra Loosemore * gcc.target/arm/fp16-compile-none-2.c: New. diff --git a/gcc/testsuite/gcc.dg/cpp/arith-3.c b/gcc/testsuite/gcc.dg/cpp/arith-3.c index 3015d31657ac..2f94e981162b 100644 --- a/gcc/testsuite/gcc.dg/cpp/arith-3.c +++ b/gcc/testsuite/gcc.dg/cpp/arith-3.c @@ -9,7 +9,7 @@ Please keep changes to arith-2.c and arith-3.c in sync. */ /* { dg-do preprocess } */ -/* { dg-options "-std=c99" } */ +/* { dg-options "-std=c99 -fshow-column" } */ #include @@ -274,7 +274,7 @@ # error /* { dg-bogus "error" } */ #endif -#if -5 / (2 - 2) /* { dg-error "division by zero" } */ +#if -5 / (2 - 2) /* { dg-error "13:division by zero" } */ #endif #if LONG_UDIVISION != LONG_UDIVISION_ANSWER @@ -286,7 +286,7 @@ #endif /* Binary %. Cannot overflow. */ -#if -5 % (2 - 2) /* { dg-error "division by zero" } */ +#if -5 % (2 - 2) /* { dg-error "13:division by zero" } */ #endif #if TARG_MIN % 1 /* { dg-bogus "overflow" } */ diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index e6ef4c31b07f..d7146588f092 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,7 @@ +2009-06-18 Manuel López-Ibáñez + + * expr.c (num_div_op): Take explicit location. + 2009-06-17 Ian Lance Taylor * include/cpplib.h (progname): Don't declare. diff --git a/libcpp/expr.c b/libcpp/expr.c index 6887b1656904..96dd2fde24ca 100644 --- a/libcpp/expr.c +++ b/libcpp/expr.c @@ -52,7 +52,8 @@ static cpp_num num_inequality_op (cpp_reader *, cpp_num, cpp_num, static cpp_num num_equality_op (cpp_reader *, cpp_num, cpp_num, enum cpp_ttype); static cpp_num num_mul (cpp_reader *, cpp_num, cpp_num); -static cpp_num num_div_op (cpp_reader *, cpp_num, cpp_num, enum cpp_ttype); +static cpp_num num_div_op (cpp_reader *, cpp_num, cpp_num, enum cpp_ttype, + source_location); static cpp_num num_lshift (cpp_num, size_t, size_t); static cpp_num num_rshift (cpp_num, size_t, size_t); @@ -1123,7 +1124,7 @@ reduce (cpp_reader *pfile, struct op *top, enum cpp_ttype op) case CPP_DIV: case CPP_MOD: top[-1].value = num_div_op (pfile, top[-1].value, - top->value, top->op); + top->value, top->op, top->loc); top[-1].loc = top->loc; break; @@ -1668,10 +1669,13 @@ num_mul (cpp_reader *pfile, cpp_num lhs, cpp_num rhs) return result; } -/* Divide two preprocessing numbers, returning the answer or the - remainder depending upon OP. */ +/* Divide two preprocessing numbers, LHS and RHS, returning the answer + or the remainder depending upon OP. LOCATION is the source location + of this operator (for diagnostics). */ + static cpp_num -num_div_op (cpp_reader *pfile, cpp_num lhs, cpp_num rhs, enum cpp_ttype op) +num_div_op (cpp_reader *pfile, cpp_num lhs, cpp_num rhs, enum cpp_ttype op, + source_location location) { cpp_num result, sub; cpp_num_part mask; @@ -1711,7 +1715,8 @@ num_div_op (cpp_reader *pfile, cpp_num lhs, cpp_num rhs, enum cpp_ttype op) else { if (!pfile->state.skip_eval) - cpp_error (pfile, CPP_DL_ERROR, "division by zero in #if"); + cpp_error_with_line (pfile, CPP_DL_ERROR, location, 0, + "division by zero in #if"); return lhs; }