-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Integrate LLVM at llvm/llvm-project@6c4267fb1779
Updates LLVM usage to match [6c4267fb1779](llvm/llvm-project@6c4267fb1779) PiperOrigin-RevId: 689129594
- Loading branch information
1 parent
7384861
commit bb171ce
Showing
2 changed files
with
43 additions
and
44 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,44 +1,43 @@ | ||
Auto generated patch. Do not edit or delete it, even if empty. | ||
diff -ruN --strip-trailing-cr a/lldb/source/Utility/DiagnosticsRendering.cpp b/lldb/source/Utility/DiagnosticsRendering.cpp | ||
--- a/lldb/source/Utility/DiagnosticsRendering.cpp | ||
+++ b/lldb/source/Utility/DiagnosticsRendering.cpp | ||
@@ -99,10 +99,10 @@ | ||
diff -ruN --strip-trailing-cr a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp | ||
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp | ||
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp | ||
@@ -50049,8 +50049,9 @@ | ||
SDValue X, Y, Z; | ||
if (sd_match(N, m_And(m_Value(X), | ||
m_OneUse(m_Or(m_Value(Y), m_Not(m_Value(Z))))))) { | ||
- // Don't fold if Y is a constant to prevent infinite loops. | ||
- if (!isa<ConstantSDNode>(Y)) | ||
+ // Don't fold if Y or Z are constants to prevent infinite loops. | ||
+ if (!DAG.isConstantIntBuildVectorOrConstantInt(Y) && | ||
+ !DAG.isConstantIntBuildVectorOrConstantInt(Z)) | ||
return DAG.getNode( | ||
ISD::AND, DL, VT, X, | ||
DAG.getNOT( | ||
diff -ruN --strip-trailing-cr a/llvm/test/CodeGen/X86/pr108731.ll b/llvm/test/CodeGen/X86/pr108731.ll | ||
--- a/llvm/test/CodeGen/X86/pr108731.ll | ||
+++ b/llvm/test/CodeGen/X86/pr108731.ll | ||
@@ -192,3 +192,23 @@ | ||
ret void | ||
} | ||
|
||
// Sort the diagnostics. | ||
auto sort = [](auto &ds) { | ||
- llvm::sort(ds.begin(), ds.end(), [](auto &d1, auto &d2) { | ||
+ std::stable_sort(ds.begin(), ds.end(), [](auto &d1, auto &d2) { | ||
auto l1 = d1.source_location.value_or(DiagnosticDetail::SourceLocation{}); | ||
auto l2 = d2.source_location.value_or(DiagnosticDetail::SourceLocation{}); | ||
- return std::pair(l1.line, l2.column) < std::pair(l1.line, l2.column); | ||
+ return std::tie(l1.line, l1.column) < std::tie(l2.line, l2.column); | ||
}); | ||
}; | ||
sort(remaining_details); | ||
diff -ruN --strip-trailing-cr a/lldb/unittests/Utility/DiagnosticsRenderingTest.cpp b/lldb/unittests/Utility/DiagnosticsRenderingTest.cpp | ||
--- a/lldb/unittests/Utility/DiagnosticsRenderingTest.cpp | ||
+++ b/lldb/unittests/Utility/DiagnosticsRenderingTest.cpp | ||
@@ -46,16 +46,20 @@ | ||
std::string result = | ||
Render({DiagnosticDetail{loc2, eSeverityError, "X", "X"}, | ||
DiagnosticDetail{loc1, eSeverityError, "Y", "Y"}}); | ||
- ASSERT_LT(StringRef(result).find("Y"), StringRef(result).find("X")); | ||
+ // Unintuitively the later diagnostic appears first in the string: | ||
+ // ^ ^ | ||
+ // | second | ||
+ // first | ||
+ ASSERT_GT(StringRef(result).find("Y"), StringRef(result).find("X")); | ||
} | ||
{ | ||
// Test that diagnostics in reverse order are emitted correctly. | ||
- SourceLocation loc1 = {FileSpec{"a.c"}, 2, 10, 0, false, true}; | ||
+ SourceLocation loc1 = {FileSpec{"a.c"}, 1, 10, 0, false, true}; | ||
SourceLocation loc2 = {FileSpec{"a.c"}, 1, 20, 0, false, true}; | ||
std::string result = | ||
Render({DiagnosticDetail{loc2, eSeverityError, "X", "X"}, | ||
DiagnosticDetail{loc1, eSeverityError, "Y", "Y"}}); | ||
- ASSERT_LT(StringRef(result).find("Y"), StringRef(result).find("X")); | ||
+ ASSERT_GT(StringRef(result).find("Y"), StringRef(result).find("X")); | ||
} | ||
{ | ||
// Test that range diagnostics are emitted correctly. | ||
+define void @PR113240(i64 %a) { | ||
+; CHECK-LABEL: PR113240: | ||
+; CHECK: # %bb.0: # %entry | ||
+; CHECK-NEXT: movq %rdi, %rax | ||
+; CHECK-NEXT: notq %rax | ||
+; CHECK-NEXT: movabsq $8796093022206, %rcx # imm = 0x7FFFFFFFFFE | ||
+; CHECK-NEXT: notq %rcx | ||
+; CHECK-NEXT: orq %rax, %rcx | ||
+; CHECK-NEXT: andq %rdi, %rcx | ||
+; CHECK-NEXT: movq %rcx, 0 | ||
+; CHECK-NEXT: retq | ||
+entry: | ||
+ %and = and i64 %a, 8796093022206 | ||
+ %bf.value = and i64 8796093022206, 0 | ||
+ %not = xor i64 %and, -1 | ||
+ %and4 = and i64 %a, %not | ||
+ store i64 %and4, ptr null, align 8 | ||
+ ret void | ||
+} | ||
+ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters