From 217c6d643124be312f4a99b203118744edb9d54c Mon Sep 17 00:00:00 2001 From: Amy Kwan Date: Fri, 3 Sep 2021 14:53:57 -0400 Subject: [PATCH] [libc++][NFC] Mark values in gdb pretty print comparison functions as live to prevent values being optimized out. It appears when testing LLVM 13 on Power, we run into failures with the `libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp` test case optimizing values out. Despite some the functions in the test already being marked with optnone, adding the `MarkAsLive()` calls inside of the pretty printer comparison functions resolves the issues of the values being optimized out. This patch aims to address https://llvm.org/PR51675. Differential Revision: https://reviews.llvm.org/D109204 --- libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp b/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp index 2d8e962..7c8d307 100644 --- a/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp +++ b/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp @@ -92,24 +92,28 @@ void MarkAsLive(Type &&) {} template void ComparePrettyPrintToChars( TypeToPrint value, const char *expectation) { + MarkAsLive(value); StopForDebugger(&value, &expectation); } template void ComparePrettyPrintToRegex( TypeToPrint value, const char *expectation) { + MarkAsLive(value); StopForDebugger(&value, &expectation); } void CompareExpressionPrettyPrintToChars( std::string value, const char *expectation) { + MarkAsLive(value); StopForDebugger(&value, &expectation); } void CompareExpressionPrettyPrintToRegex( std::string value, const char *expectation) { + MarkAsLive(value); StopForDebugger(&value, &expectation); } -- 2.7.4