Hi,
this is something I noticed when looking into more EXPR_LOC_OR_HERE uses
in the C++ front-end: I don't think we want to crash if EXPR_LOC_OR_HERE
is passed a NULL_TREE. Tested x86_64-linux.
Thanks,
Paolo.
///////////////////
2012-05-15 Paolo Carlini <paolo.carl...@oracle.com>
* tree.h (EXPR_LOCATION): Use CAN_HAVE_LOCATION_P.
Index: tree.h
===================================================================
--- tree.h (revision 187501)
+++ tree.h (working copy)
@@ -1684,7 +1684,7 @@ struct GTY(()) tree_constructor {
decls and constants can be shared among multiple locations, so
return nothing. */
#define EXPR_LOCATION(NODE) \
- (EXPR_P ((NODE)) ? (NODE)->exp.locus : UNKNOWN_LOCATION)
+ (CAN_HAVE_LOCATION_P ((NODE)) ? (NODE)->exp.locus : UNKNOWN_LOCATION)
#define SET_EXPR_LOCATION(NODE, LOCUS) EXPR_CHECK ((NODE))->exp.locus = (LOCUS)
#define EXPR_HAS_LOCATION(NODE) (EXPR_LOCATION (NODE) != UNKNOWN_LOCATION)
#define EXPR_LOC_OR_HERE(NODE) (EXPR_HAS_LOCATION (NODE) ? (NODE)->exp.locus :
input_location)