@@ -63,14 +63,15 @@ split_opt(llvm::LlvmRvsdgModule & rm)
6363 // TODO: figure out which optimizations to use here
6464 jlm::llvm::DeadNodeElimination dne;
6565 CommonNodeElimination cne;
66- jlm::llvm::InvariantValueRedirection ivr;
66+ constexpr llvm::InvariantValueRedirection::Configuration ivrConfiguration;
67+ llvm::InvariantValueRedirection invariantValueRedirection (std::move (ivrConfiguration));
6768 llvm::LoopUnswitching loopUnswitching (llvm::LoopUnswitchingDefaultHeuristic::create ());
6869 jlm::llvm::NodeReduction red;
6970 jlm::util::StatisticsCollector statisticsCollector;
7071 loopUnswitching.Run (rm, statisticsCollector);
7172 dne.Run (rm, statisticsCollector);
7273 cne.Run (rm, statisticsCollector);
73- ivr .Run (rm, statisticsCollector);
74+ invariantValueRedirection .Run (rm, statisticsCollector);
7475 red.Run (rm, statisticsCollector);
7576 dne.Run (rm, statisticsCollector);
7677}
@@ -81,13 +82,14 @@ pre_opt(jlm::llvm::LlvmRvsdgModule & rm)
8182 // TODO: figure out which optimizations to use here
8283 jlm::llvm::DeadNodeElimination dne;
8384 CommonNodeElimination cne;
84- jlm::llvm::InvariantValueRedirection ivr;
85+ constexpr llvm::InvariantValueRedirection::Configuration ivrConfiguration;
86+ llvm::InvariantValueRedirection invariantValueRedirection (std::move (ivrConfiguration));
8587 llvm::LoopUnswitching loopUnswitching (llvm::LoopUnswitchingDefaultHeuristic::create ());
8688 jlm::util::StatisticsCollector statisticsCollector;
8789 loopUnswitching.Run (rm, statisticsCollector);
8890 dne.Run (rm, statisticsCollector);
8991 cne.Run (rm, statisticsCollector);
90- ivr .Run (rm, statisticsCollector);
92+ invariantValueRedirection .Run (rm, statisticsCollector);
9193 dne.Run (rm, statisticsCollector);
9294 cne.Run (rm, statisticsCollector);
9395 dne.Run (rm, statisticsCollector);
@@ -207,7 +209,8 @@ rename_delta(rvsdg::DeltaNode * odn)
207209 name,
208210 llvm::Linkage::externalLinkage,
209211 " " ,
210- op->constant ()));
212+ op->constant (),
213+ op->getAlignment ()));
211214 /* add dependencies */
212215 rvsdg::SubstitutionMap rmap;
213216 for (auto ctxVar : odn->GetContextVars ())
@@ -303,7 +306,9 @@ split_hls_function(llvm::LlvmRvsdgModule & rm, const std::string & function_name
303306 oldGraphImport->ValueType (),
304307 oldGraphImport->ImportedType (),
305308 oldGraphImport->Name (),
306- oldGraphImport->linkage ());
309+ oldGraphImport->linkage (),
310+ oldGraphImport->isConstant (),
311+ oldGraphImport->getAlignment ());
307312 smap.insert (ln->input (i)->origin (), &newGraphImport);
308313 continue ;
309314 }
@@ -331,7 +336,9 @@ split_hls_function(llvm::LlvmRvsdgModule & rm, const std::string & function_name
331336 op->Type (),
332337 llvm::PointerType::Create (),
333338 op->name (),
334- llvm::Linkage::externalLinkage);
339+ llvm::Linkage::externalLinkage,
340+ op->constant (),
341+ op->getAlignment ());
335342 smap.insert (ln->input (i)->origin (), &graphImport);
336343 // add export for delta to rm
337344 // TODO: check if not already exported and maybe adjust linkage?
@@ -354,7 +361,9 @@ split_hls_function(llvm::LlvmRvsdgModule & rm, const std::string & function_name
354361 op.Type (),
355362 op.Type (),
356363 op.name (),
357- llvm::Linkage::externalLinkage); // TODO: change linkage?
364+ llvm::Linkage::externalLinkage, // TODO: change linkage?
365+ false ,
366+ 1 );
358367 ln->output ()->divert_users (&graphImport);
359368 remove (ln);
360369 std::cout << " function "
@@ -378,7 +387,8 @@ createTransformationSequence(rvsdg::DotWriter & dotWriter, const bool dumpRvsdgD
378387 auto predicateCorrelation = std::make_shared<llvm::PredicateCorrelation>();
379388 auto deadNodeElimination = std::make_shared<llvm::DeadNodeElimination>();
380389 auto commonNodeElimination = std::make_shared<CommonNodeElimination>();
381- auto invariantValueRedirection = std::make_shared<llvm::InvariantValueRedirection>();
390+ auto invariantValueRedirection = std::make_shared<llvm::InvariantValueRedirection>(
391+ llvm::InvariantValueRedirection::Configuration ());
382392 auto loopUnswitching =
383393 std::make_shared<llvm::LoopUnswitching>(llvm::LoopUnswitchingDefaultHeuristic::create ());
384394 auto ioBarrierRemoval = std::make_shared<IOBarrierRemoval>();
0 commit comments