summaryrefslogtreecommitdiff
path: root/src/amd/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'src/amd/compiler')
-rw-r--r--src/amd/compiler/aco_assembler.cpp7
-rw-r--r--src/amd/compiler/aco_instruction_selection.cpp7
-rw-r--r--src/amd/compiler/aco_interface.cpp12
-rw-r--r--src/amd/compiler/aco_optimizer.cpp7
-rw-r--r--src/amd/compiler/aco_validate.cpp14
5 files changed, 32 insertions, 15 deletions
diff --git a/src/amd/compiler/aco_assembler.cpp b/src/amd/compiler/aco_assembler.cpp
index ac9339c99eb..755bed09e1a 100644
--- a/src/amd/compiler/aco_assembler.cpp
+++ b/src/amd/compiler/aco_assembler.cpp
@@ -5,6 +5,7 @@
#include "aco_builder.h"
#include "common/sid.h"
#include "ac_shader_util.h"
+#include "util/memstream.h"
#include "util/u_math.h"
namespace aco {
@@ -83,11 +84,13 @@ void emit_instruction(asm_context& ctx, std::vector<uint32_t>& out, Instruction*
if (opcode == (uint32_t)-1) {
char *out;
size_t outsize;
- FILE *memf = open_memstream(&out, &outsize);
+ struct u_memstream mem;
+ u_memstream_open(&mem, &out, &outsize);
+ FILE *const memf = u_memstream_get(&mem);
fprintf(memf, "Unsupported opcode: ");
aco_print_instr(instr, memf);
- fclose(memf);
+ u_memstream_close(&mem);
aco_err(ctx.program, out);
free(out);
diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp
index 1da9ea41d98..c57b6709ac6 100644
--- a/src/amd/compiler/aco_instruction_selection.cpp
+++ b/src/amd/compiler/aco_instruction_selection.cpp
@@ -34,6 +34,7 @@
#include "aco_interface.h"
#include "aco_instruction_selection.h"
#include "util/fast_idiv_by_const.h"
+#include "util/memstream.h"
#include "ac_exp_param.h"
#include "sid.h"
@@ -50,11 +51,13 @@ static void _isel_err(isel_context *ctx, const char *file, unsigned line,
{
char *out;
size_t outsize;
- FILE *memf = open_memstream(&out, &outsize);
+ struct u_memstream mem;
+ u_memstream_open(&mem, &out, &outsize);
+ FILE *const memf = u_memstream_get(&mem);
fprintf(memf, "%s: ", msg);
nir_print_instr(instr, memf);
- fclose(memf);
+ u_memstream_close(&mem);
_aco_err(ctx->program, file, line, out);
free(out);
diff --git a/src/amd/compiler/aco_interface.cpp b/src/amd/compiler/aco_interface.cpp
index 9b3f88e8a26..55ddd19b638 100644
--- a/src/amd/compiler/aco_interface.cpp
+++ b/src/amd/compiler/aco_interface.cpp
@@ -23,6 +23,7 @@
#include "aco_interface.h"
#include "aco_ir.h"
+#include "util/memstream.h"
#include "vulkan/radv_shader.h"
#include "vulkan/radv_shader_args.h"
@@ -110,11 +111,12 @@ void aco_compile_shader(unsigned shader_count,
if (args->options->record_ir) {
char *data = NULL;
size_t size = 0;
- FILE *f = open_memstream(&data, &size);
- if (f) {
- aco_print_program(program.get(), f);
- fputc(0, f);
- fclose(f);
+ u_memstream mem;
+ if (u_memstream_open(&mem, &data, &size)) {
+ FILE *const memf = u_memstream_get(&mem);
+ aco_print_program(program.get(), memf);
+ fputc(0, memf);
+ u_memstream_close(&mem);
}
llvm_ir = std::string(data, data + size);
diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp
index a21fb21d1fa..22497a10452 100644
--- a/src/amd/compiler/aco_optimizer.cpp
+++ b/src/amd/compiler/aco_optimizer.cpp
@@ -30,6 +30,7 @@
#include "aco_ir.h"
#include "util/half_float.h"
+#include "util/memstream.h"
#include "util/u_math.h"
namespace aco {
@@ -40,11 +41,13 @@ void perfwarn(Program *program, bool cond, const char *msg, Instruction *instr)
if (cond) {
char *out;
size_t outsize;
- FILE *memf = open_memstream(&out, &outsize);
+ struct u_memstream mem;
+ u_memstream_open(&mem, &out, &outsize);
+ FILE *const memf = u_memstream_get(&mem);
fprintf(memf, "%s: ", msg);
aco_print_instr(instr, memf);
- fclose(memf);
+ u_memstream_close(&mem);
aco_perfwarn(program, out);
free(out);
diff --git a/src/amd/compiler/aco_validate.cpp b/src/amd/compiler/aco_validate.cpp
index d8886cd31b7..ef3b4c78cba 100644
--- a/src/amd/compiler/aco_validate.cpp
+++ b/src/amd/compiler/aco_validate.cpp
@@ -27,6 +27,8 @@
#include <array>
#include <map>
+#include "util/memstream.h"
+
namespace aco {
static void aco_log(Program *program, enum radv_compiler_debug_level level,
@@ -78,11 +80,13 @@ bool validate_ir(Program* program)
if (!check) {
char *out;
size_t outsize;
- FILE *memf = open_memstream(&out, &outsize);
+ struct u_memstream mem;
+ u_memstream_open(&mem, &out, &outsize);
+ FILE *const memf = u_memstream_get(&mem);
fprintf(memf, "%s: ", msg);
aco_print_instr(instr, memf);
- fclose(memf);
+ u_memstream_close(&mem);
aco_err(program, out);
free(out);
@@ -520,7 +524,9 @@ bool ra_fail(Program *program, Location loc, Location loc2, const char *fmt, ...
char *out;
size_t outsize;
- FILE *memf = open_memstream(&out, &outsize);
+ struct u_memstream mem;
+ u_memstream_open(&mem, &out, &outsize);
+ FILE *const memf = u_memstream_get(&mem);
fprintf(memf, "RA error found at instruction in BB%d:\n", loc.block->index);
if (loc.instr) {
@@ -534,7 +540,7 @@ bool ra_fail(Program *program, Location loc, Location loc2, const char *fmt, ...
aco_print_instr(loc2.instr, memf);
}
fprintf(memf, "\n\n");
- fclose(memf);
+ u_memstream_close(&mem);
aco_err(program, out);
free(out);