46 lines
1.6 KiB
Diff
46 lines
1.6 KiB
Diff
From 2f0ef2c69e99e1096a2a72c7a29025a736b044b4 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?G=C3=A1bor=20Boskovits?= <boskovits@gmail.com>
|
|
Date: Mon, 2 Jul 2018 23:37:25 +0200
|
|
Subject: [PATCH] Fix gcc segfault.
|
|
|
|
---
|
|
src/share/vm/opto/output.cpp | 8 +++++---
|
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/share/vm/opto/output.cpp b/src/share/vm/opto/output.cpp
|
|
index d46cb87..0eb9eda 100644
|
|
--- a/src/share/vm/opto/output.cpp
|
|
+++ b/src/share/vm/opto/output.cpp
|
|
@@ -1787,6 +1787,8 @@ uint Scheduling::_total_instructions_per_bundle[Pipeline::_max_instrs_per_cycle+
|
|
|
|
// Initializer for class Scheduling
|
|
|
|
+volatile const void *eePointer = Pipeline_Use::elaborated_elements;
|
|
+
|
|
Scheduling::Scheduling(Arena *arena, Compile &compile)
|
|
: _arena(arena),
|
|
_cfg(compile.cfg()),
|
|
@@ -1829,7 +1831,7 @@ Scheduling::Scheduling(Arena *arena, Compile &compile)
|
|
memset(_current_latency, 0, node_max * sizeof(unsigned short));
|
|
|
|
// Clear the bundling information
|
|
- memcpy(_bundle_use_elements, Pipeline_Use::elaborated_elements, sizeof(Pipeline_Use::elaborated_elements));
|
|
+ memcpy(_bundle_use_elements, (void *)eePointer, 11*sizeof(Pipeline_Use_Element));
|
|
|
|
// Get the last node
|
|
Block* block = _cfg->get_block(_cfg->number_of_blocks() - 1);
|
|
@@ -1880,8 +1882,8 @@ void Scheduling::step_and_clear() {
|
|
_bundle_use.reset();
|
|
|
|
memcpy(_bundle_use_elements,
|
|
- Pipeline_Use::elaborated_elements,
|
|
- sizeof(Pipeline_Use::elaborated_elements));
|
|
+ (void *)eePointer,
|
|
+ 11*sizeof(Pipeline_Use_Element));
|
|
}
|
|
|
|
// Perform instruction scheduling and bundling over the sequence of
|
|
--
|
|
2.18.0
|
|
|