6363#include " llvm/IR/TypeFinder.h"
6464#include " llvm/IR/TypedPointerType.h"
6565#include " llvm/IR/Use.h"
66+ #include " llvm/IR/UseListOrder.h"
6667#include " llvm/IR/User.h"
6768#include " llvm/IR/Value.h"
6869#include " llvm/Support/AtomicOrdering.h"
@@ -102,10 +103,12 @@ static cl::opt<bool> PrintProfData(
102103 " print-prof-data" , cl::Hidden,
103104 cl::desc (" Pretty print perf data (branch weights, etc) when dumping" ));
104105
105- static cl::opt<bool > PreserveAssemblyUseListOrder (
106- " preserve-ll-uselistorder" ,
107- cl::desc (" Preserve use-list order when writing LLVM assembly." ),
108- cl::init(false ), cl::Hidden);
106+ static cl::opt<std::optional<bool >, /* ExternalStorage=*/ false ,
107+ PreserveUseListOrderOptionParser>
108+ PreserveAssemblyUseListOrder (
109+ " preserve-ll-uselistorder" ,
110+ cl::desc (" Preserve use-list order when writing LLVM assembly." ),
111+ cl::init(std::nullopt ), cl::Hidden, cl::ValueOptional);
109112
110113// Make virtual table appear in this compilation unit.
111114AssemblyAnnotationWriter::~AssemblyAnnotationWriter () = default ;
@@ -2977,8 +2980,8 @@ AssemblyWriter::AssemblyWriter(formatted_raw_ostream &o, SlotTracker &Mac,
29772980 bool IsForDebug, bool ShouldPreserveUseListOrder)
29782981 : Out(o), TheModule(M), Machine(Mac), TypePrinter(M), AnnotationWriter(AAW),
29792982 IsForDebug(IsForDebug),
2980- ShouldPreserveUseListOrder(ShouldPreserveUseListOrder ||
2981- PreserveAssemblyUseListOrder) {
2983+ ShouldPreserveUseListOrder(
2984+ PreserveAssemblyUseListOrder.value_or(ShouldPreserveUseListOrder) ) {
29822985 if (!TheModule)
29832986 return ;
29842987 for (const GlobalObject &GO : TheModule->global_objects ())
@@ -2990,7 +2993,8 @@ AssemblyWriter::AssemblyWriter(formatted_raw_ostream &o, SlotTracker &Mac,
29902993 const ModuleSummaryIndex *Index, bool IsForDebug)
29912994 : Out(o), TheIndex(Index), Machine(Mac), TypePrinter(/* Module=*/ nullptr ),
29922995 IsForDebug(IsForDebug),
2993- ShouldPreserveUseListOrder(PreserveAssemblyUseListOrder) {}
2996+ ShouldPreserveUseListOrder(PreserveAssemblyUseListOrder.value_or(false )) {
2997+ }
29942998
29952999void AssemblyWriter::writeOperand (const Value *Operand, bool PrintType) {
29963000 if (!Operand) {
0 commit comments