------- Comment #3 from mikael at gcc dot gnu dot org 2010-04-10 21:27 ------- With this : diff --git a/trans-expr.c b/trans-expr.c index 7e95ce1..a6f8616 100644 --- a/trans-expr.c +++ b/trans-expr.c @@ -1382,6 +1382,8 @@ gfc_conv_expr_op (gfc_se * se, gfc_expr * expr) else se->expr = fold_build2 (code, type, lse.expr, rse.expr);
+ SET_EXPR_LOCATION (se->expr, expr->where.lb->location); + /* Add the post blocks. */ gfc_add_block_to_block (&se->post, &rse.post); gfc_add_block_to_block (&se->post, &lse.post); diff --git a/trans-stmt.c b/trans-stmt.c index 0b215f2..4b8ae69 100644 --- a/trans-stmt.c +++ b/trans-stmt.c @@ -718,6 +718,7 @@ gfc_trans_if_1 (gfc_code * code) /* Build the condition expression and add it to the condition block. */ stmt = fold_build3 (COND_EXPR, void_type_node, if_se.expr, stmt, elsestmt); + SET_EXPR_LOCATION (stmt, code->loc.lb->location); gfc_add_expr_to_block (&if_se.pre, stmt); I get : -: 0:Source:pr41359.f90 -: 0:Graph:pr41359.gcno -: 0:Data:pr41359.gcda -: 0:Runs:1 -: 0:Programs:1 1: 1:program main -: 2: -: 3: implicit none -: 4: -: 5: integer :: a = 7 -: 6: 1: 7: if( a == 0 ) then #####: 8: print *, "a is null" 1: 9: else if( a > 0 ) then 1: 10: print *, "a is positif" -: 11: else #####: 12: print *, "a is negatif" -: 13: end if -: 14: 2: 15:end program -: 16: -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41359