builtins.c: Don't include gomp-constants.h.
* builtins.c: Don't include gomp-constants.h. (fold_builtin_1): Don't fold acc_on_device here. * gimple-fold.c: Include gomp-constants.h. (gimple_fold_builtin_acc_on_device): New. (gimple_fold_builtin): Call it. From-SVN: r228340
This commit is contained in:
parent
d878e79bf8
commit
4812613802
@ -1,3 +1,11 @@
|
||||
2015-10-01 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* builtins.c: Don't include gomp-constants.h.
|
||||
(fold_builtin_1): Don't fold acc_on_device here.
|
||||
* gimple-fold.c: Include gomp-constants.h.
|
||||
(gimple_fold_builtin_acc_on_device): New.
|
||||
(gimple_fold_builtin): Call it.
|
||||
|
||||
2015-10-01 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* config/i386/x86-tune.def (X86_TUNE_USE_BT): Enable for
|
||||
|
@ -68,7 +68,6 @@ along with GCC; see the file COPYING3. If not see
|
||||
#include "cgraph.h"
|
||||
#include "tree-chkp.h"
|
||||
#include "rtl-chkp.h"
|
||||
#include "gomp-constants.h"
|
||||
|
||||
|
||||
static tree do_mpc_arg1 (tree, tree, int (*)(mpc_ptr, mpc_srcptr, mpc_rnd_t));
|
||||
@ -10234,27 +10233,6 @@ fold_builtin_1 (location_t loc, tree fndecl, tree arg0)
|
||||
return build_empty_stmt (loc);
|
||||
break;
|
||||
|
||||
case BUILT_IN_ACC_ON_DEVICE:
|
||||
/* Don't fold on_device until we know which compiler is active. */
|
||||
if (symtab->state == EXPANSION)
|
||||
{
|
||||
unsigned val_host = GOMP_DEVICE_HOST;
|
||||
unsigned val_dev = GOMP_DEVICE_NONE;
|
||||
|
||||
#ifdef ACCEL_COMPILER
|
||||
val_host = GOMP_DEVICE_NOT_HOST;
|
||||
val_dev = ACCEL_COMPILER_acc_device;
|
||||
#endif
|
||||
tree host = build2 (EQ_EXPR, boolean_type_node, arg0,
|
||||
build_int_cst (integer_type_node, val_host));
|
||||
tree dev = build2 (EQ_EXPR, boolean_type_node, arg0,
|
||||
build_int_cst (integer_type_node, val_dev));
|
||||
|
||||
tree result = build2 (TRUTH_OR_EXPR, boolean_type_node, host, dev);
|
||||
return fold_convert (integer_type_node, result);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -62,6 +62,7 @@ along with GCC; see the file COPYING3. If not see
|
||||
#include "output.h"
|
||||
#include "tree-eh.h"
|
||||
#include "gimple-match.h"
|
||||
#include "gomp-constants.h"
|
||||
|
||||
/* Return true when DECL can be referenced from current unit.
|
||||
FROM_DECL (if non-null) specify constructor of variable DECL was taken from.
|
||||
@ -2708,6 +2709,47 @@ gimple_fold_builtin_strlen (gimple_stmt_iterator *gsi)
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Fold a call to __builtin_acc_on_device. */
|
||||
|
||||
static bool
|
||||
gimple_fold_builtin_acc_on_device (gimple_stmt_iterator *gsi, tree arg0)
|
||||
{
|
||||
/* Defer folding until we know which compiler we're in. */
|
||||
if (symtab->state != EXPANSION)
|
||||
return false;
|
||||
|
||||
unsigned val_host = GOMP_DEVICE_HOST;
|
||||
unsigned val_dev = GOMP_DEVICE_NONE;
|
||||
|
||||
#ifdef ACCEL_COMPILER
|
||||
val_host = GOMP_DEVICE_NOT_HOST;
|
||||
val_dev = ACCEL_COMPILER_acc_device;
|
||||
#endif
|
||||
|
||||
location_t loc = gimple_location (gsi_stmt (*gsi));
|
||||
|
||||
tree host_eq = make_ssa_name (boolean_type_node);
|
||||
gimple *host_ass = gimple_build_assign
|
||||
(host_eq, EQ_EXPR, arg0, build_int_cst (TREE_TYPE (arg0), val_host));
|
||||
gimple_set_location (host_ass, loc);
|
||||
gsi_insert_before (gsi, host_ass, GSI_SAME_STMT);
|
||||
|
||||
tree dev_eq = make_ssa_name (boolean_type_node);
|
||||
gimple *dev_ass = gimple_build_assign
|
||||
(dev_eq, EQ_EXPR, arg0, build_int_cst (TREE_TYPE (arg0), val_dev));
|
||||
gimple_set_location (dev_ass, loc);
|
||||
gsi_insert_before (gsi, dev_ass, GSI_SAME_STMT);
|
||||
|
||||
tree result = make_ssa_name (boolean_type_node);
|
||||
gimple *result_ass = gimple_build_assign
|
||||
(result, BIT_IOR_EXPR, host_eq, dev_eq);
|
||||
gimple_set_location (result_ass, loc);
|
||||
gsi_insert_before (gsi, result_ass, GSI_SAME_STMT);
|
||||
|
||||
replace_call_with_value (gsi, result);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Fold the non-target builtin at *GSI and return whether any simplification
|
||||
was made. */
|
||||
@ -2848,6 +2890,9 @@ gimple_fold_builtin (gimple_stmt_iterator *gsi)
|
||||
n == 3
|
||||
? gimple_call_arg (stmt, 2)
|
||||
: NULL_TREE, fcode);
|
||||
case BUILT_IN_ACC_ON_DEVICE:
|
||||
return gimple_fold_builtin_acc_on_device (gsi,
|
||||
gimple_call_arg (stmt, 0));
|
||||
default:;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user