已合并
fix printf O3 bug #388
louyuxuan创建于 2月6日
fix printf O3 bug #388
已合并
louyuxuan创建于 2月6日
4 个文件变更+8-16
@@ -33,7 +33,7 @@ __SIMT_DEVICE_FUNCTIONS_DECL__ inline void __trap()
33#endif33#endif
34}34}
35 35 
36-__SIMT_DEVICE_FUNCTIONS_DECL__ inline void __assert_fail(const char* __assertion,36+static __attribute__((noinline)) __SIMT_DEVICE_FUNCTIONS_DECL__ void __assert_fail(const char* __assertion,
37 const char* __file, unsigned int __line, const char* __function) noexcept37 const char* __file, unsigned int __line, const char* __function) noexcept
38{38{
39 simt_printf_impl(DumpType::DUMP_SIMT_ASSERT, "[ASSERT] %s:%u: %s: Assertion `%s' failed.\n", __file, __line,39 simt_printf_impl(DumpType::DUMP_SIMT_ASSERT, "[ASSERT] %s:%u: %s: Assertion `%s' failed.\n", __file, __line,
@@ -48,7 +48,7 @@ __SIMT_DEVICE_FUNCTIONS_DECL__ inline void __trap()
48#endif48#endif
49}49}
50 50 
51-__SIMT_DEVICE_FUNCTIONS_DECL__ inline void __assert_fail(const __gm__ char* __assertion,51+static __attribute__((noinline)) __SIMT_DEVICE_FUNCTIONS_DECL__ void __assert_fail(const __gm__ char* __assertion,
52 const __gm__ char* __file, unsigned int __line, const __gm__ char* __function) noexcept52 const __gm__ char* __file, unsigned int __line, const __gm__ char* __function) noexcept
53{53{
54 simt_printf_impl(DumpType::DUMP_SIMT_ASSERT, "[ASSERT] %s:%u: %s: Assertion `%s' failed.\n", __file, __line,54 simt_printf_impl(DumpType::DUMP_SIMT_ASSERT, "[ASSERT] %s:%u: %s: Assertion `%s' failed.\n", __file, __line,
@@ -479,9 +479,9 @@ __SIMT_DEVICE_FUNCTIONS_DECL__ inline void simt_printf_impl(DumpType print_type,
479#ifndef __CHECK_FEATURE_AT_PRECOMPILE479#ifndef __CHECK_FEATURE_AT_PRECOMPILE
480 480 
481template <class... Args>481template <class... Args>
482-__SIMT_DEVICE_FUNCTIONS_DECL__ __attribute__((always_inline)) inline void printf(const __gm__ char* fmt, Args&&... args)482+static __attribute__((noinline)) __SIMT_DEVICE_FUNCTIONS_DECL__ void printf(const __gm__ char* fmt, Args&&... args)
483{483{
484-#if defined (ASCENDC_DUMP) && (ASCENDC_DUMP == 1)484+#if !defined (ASCENDC_DUMP) || (ASCENDC_DUMP != 0)
485 simt_printf_impl(DumpType::DUMP_SIMT_PRINTF, fmt, args...);485 simt_printf_impl(DumpType::DUMP_SIMT_PRINTF, fmt, args...);
486#endif486#endif
487}487}
@@ -28,24 +28,16 @@
28#endif28#endif
29#endif29#endif
30 30 
31+#include "impl/utils/debug/asc_assert_simt_impl.h"
32+ 
31namespace __asc_simt_vf {33namespace __asc_simt_vf {
32__SIMT_DEVICE_FUNCTIONS_DECL__ inline void __trap();34__SIMT_DEVICE_FUNCTIONS_DECL__ inline void __trap();
33- 
34-#ifdef __NPU_COMPILER_INTERNAL_PURE_SIMT__
35-__SIMT_DEVICE_FUNCTIONS_DECL__ inline void __assert_fail(const char* __assertion, const char* __file,
36- unsigned int __line, const char* __function) noexcept;
37-#else
38-__SIMT_DEVICE_FUNCTIONS_DECL__ inline void __assert_fail(const __gm__ char* __assertion, const __gm__ char* __file,
39- unsigned int __line, const __gm__ char* __function) noexcept;
40-#endif
41} // namespace __asc_simt_vf35} // namespace __asc_simt_vf
42 36 
43#ifndef assert37#ifndef assert
44#define assert(expr) (static_cast<bool>(expr) ? void(0) : __assert_fail(#expr, __FILE__, __LINE__, ""))38#define assert(expr) (static_cast<bool>(expr) ? void(0) : __assert_fail(#expr, __FILE__, __LINE__, ""))
45#endif39#endif
46 40 
47-#include "impl/utils/debug/asc_assert_simt_impl.h"
48- 
49#if defined(__UNDEF_ASCENDC_INCLUDE_COMPILER_INTERNAL_HEADERS_ASC_ASSERT_H__)41#if defined(__UNDEF_ASCENDC_INCLUDE_COMPILER_INTERNAL_HEADERS_ASC_ASSERT_H__)
50#undef __ASCENDC_INCLUDE_INTERNAL_HEADERS__42#undef __ASCENDC_INCLUDE_INTERNAL_HEADERS__
51#undef __UNDEF_ASCENDC_INCLUDE_COMPILER_INTERNAL_HEADERS_ASC_ASSERT_H__43#undef __UNDEF_ASCENDC_INCLUDE_COMPILER_INTERNAL_HEADERS_ASC_ASSERT_H__
@@ -28,9 +28,9 @@
28namespace __asc_simt_vf {28namespace __asc_simt_vf {
29template <class... Args>29template <class... Args>
30#ifndef __NPU_COMPILER_INTERNAL_PURE_SIMT__30#ifndef __NPU_COMPILER_INTERNAL_PURE_SIMT__
31-__attribute__((always_inline)) inline __SIMT_DEVICE_FUNCTIONS_DECL__ void printf(const __gm__ char* fmt, Args&&... args);31+static __attribute__((noinline)) __SIMT_DEVICE_FUNCTIONS_DECL__ void printf(const __gm__ char* fmt, Args&&... args);
32#else32#else
33-__attribute__((always_inline)) inline __SIMT_DEVICE_FUNCTIONS_DECL__ void printf(const char* fmt, Args&&... args);33+static __attribute__((noinline)) __SIMT_DEVICE_FUNCTIONS_DECL__ void printf(const char* fmt, Args&&... args);
34#endif34#endif
35} // namespase __asc_simt_vf35} // namespase __asc_simt_vf
36 36