From 9cb3ee01d601b92a1813e6e93ed7aaf4952088a6 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Tue, 17 Mar 2020 11:19:12 +0900 Subject: [PATCH] [qfcc] Add pointer value check Extraction is a little more complicated, though, so undecided on that. --- tools/qfcc/include/expr.h | 1 + tools/qfcc/source/expr.c | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/tools/qfcc/include/expr.h b/tools/qfcc/include/expr.h index a181f7205..b2e01a491 100644 --- a/tools/qfcc/include/expr.h +++ b/tools/qfcc/include/expr.h @@ -618,6 +618,7 @@ int is_integer_val (expr_t *e) __attribute__((pure)); int is_uinteger_val (expr_t *e) __attribute__((pure)); int is_short_val (expr_t *e) __attribute__((pure)); int is_integral_val (expr_t *e) __attribute__((pure)); +int is_pointer_val (expr_t *e) __attribute__((pure)); /** Create a reference to the global .self entity variable. diff --git a/tools/qfcc/source/expr.c b/tools/qfcc/source/expr.c index c8c9207fc..29e249d70 100644 --- a/tools/qfcc/source/expr.c +++ b/tools/qfcc/source/expr.c @@ -1193,6 +1193,15 @@ expr_integral (expr_t *e) internal_error (e, "not an integral constant"); } +int +is_pointer_val (expr_t *e) +{ + if (e->type == ex_value && e->e.value->lltype == ev_pointer) { + return 1; + } + return 0; +} + expr_t * new_alias_expr (type_t *type, expr_t *expr) {