Skip to content

Commit d385957

Browse files
committed
compiler: switch cxx backend to static_cast
1 parent f968a89 commit d385957

3 files changed

Lines changed: 11 additions & 3 deletions

File tree

devito/arch/compiler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ def __init_finalize__(self, **kwargs):
491491
language = kwargs.pop('language', configuration['language'])
492492
platform = kwargs.pop('platform', configuration['platform'])
493493

494-
if platform is NVIDIAX:
494+
if platform is NvidiaDevice:
495495
self.cflags.remove(f'-std={self.std}')
496496
# Add flags for OpenMP offloading
497497
if language in ['C', 'openmp']:

devito/ir/cgen/printer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,10 +344,10 @@ def _print_InlineIf(self, expr):
344344
PREC = precedence(expr)
345345
return self.parenthesize("(%s) ? %s : %s" % (cond, true_expr, false_expr), PREC)
346346

347-
def _print_UnaryOp(self, expr, op=None):
347+
def _print_UnaryOp(self, expr, op=None, parenthesize=False):
348348
op = op or expr._op
349349
base = self._print(expr.base)
350-
if not expr.base.is_Symbol:
350+
if not expr.base.is_Symbol or parenthesize:
351351
base = f'({base})'
352352
return f'{op}{base}'
353353

devito/passes/iet/languages/CXX.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,11 @@ class CXXPrinter(BasePrinter, CXX11CodePrinter):
8585

8686
def _print_ImaginaryUnit(self, expr):
8787
return f'1i{self.prec_literal(expr).lower()}'
88+
89+
def _print_Cast(self, expr):
90+
# The CXX recommended way to cast is to use static_cast
91+
tstr = self._print(expr._C_ctype)
92+
if 'void' in tstr:
93+
return super()._print_Cast(expr)
94+
cast = f'static_cast<{tstr}{self._print(expr.stars)}>'
95+
return self._print_UnaryOp(expr, op=cast, parenthesize=True)

0 commit comments

Comments
 (0)