Skip to content

Commit

Permalink
[OpenMP][deviceRTLs] Drop assert in common parts of deviceRTLs
Browse files Browse the repository at this point in the history
The header `assert.h` needs to be included in order to use `assert` in the code.
When building NVPTX `deviceRTLs` on a CUDA free system, it requires headers from
`gcc-multilib`, which some systems don't have. This patch drops the use of
`assert` in common parts of `deviceRTLs`. In light of
`openmp/libomptarget/deviceRTLs/amdgcn/src/target_impl.h`, a code block
```
if (!cond)
  __builtin_trap();
```
is being used. The builtin will be translated to `call void @llvm.trap()`, and
the corresponding PTX is `trap;`.

Reviewed By: JonChesterfield

Differential Revision: https://reviews.llvm.org/D95986
  • Loading branch information
shiltian committed Feb 4, 2021
1 parent 215441f commit 567b3f8
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 10 deletions.
6 changes: 0 additions & 6 deletions openmp/libomptarget/deviceRTLs/amdgcn/src/target_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

#include "amdgcn_interface.h"

#include <assert.h>
#include <inttypes.h>
#include <stddef.h>
#include <stdint.h>
Expand Down Expand Up @@ -68,11 +67,6 @@ enum : __kmpc_impl_lanemask_t {
__kmpc_impl_all_lanes = ~(__kmpc_impl_lanemask_t)0
};

// DEVICE versions of part of libc
INLINE void __assert_fail(const char *, const char *, unsigned int,
const char *) {
__builtin_trap();
}
EXTERN int printf(const char *, ...);

#endif
10 changes: 7 additions & 3 deletions openmp/libomptarget/deviceRTLs/common/debug.h
Original file line number Diff line number Diff line change
Expand Up @@ -142,13 +142,17 @@ NOINLINE static void log(const char *fmt, Arguments... parameters) {
template <typename... Arguments>
NOINLINE static void check(bool cond, const char *fmt,
Arguments... parameters) {
if (!cond)
if (!cond) {
printf(fmt, (int)GetBlockIdInKernel(), (int)GetThreadIdInBlock(),
(int)GetWarpId(), (int)GetLaneId(), parameters...);
assert(cond);
__builtin_trap();
}
}

NOINLINE static void check(bool cond) { assert(cond); }
NOINLINE static void check(bool cond) {
if (!cond)
__builtin_trap();
}
#endif

// set flags that are tested (inclusion properties)
Expand Down
1 change: 0 additions & 1 deletion openmp/libomptarget/deviceRTLs/nvptx/src/target_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
#ifndef _TARGET_IMPL_H_
#define _TARGET_IMPL_H_

#include <assert.h>
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
Expand Down

0 comments on commit 567b3f8

Please sign in to comment.