[llvm] [AsmParser] Remove TBAA auto-upgrade in IR parser (PR #226914)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 28 00:54:26 PDT 2026


https://github.com/nikic created https://github.com/llvm/llvm-project/pull/226914

At this point, the struct path TBAA format is more than a decade old, so remove support for upgrading from the old format in the textual IR parser. Bitcode upgrade support is retained, as bitcode is backwards compatible.

This avoids introduction of new tests using the old format. Existing tests were migrated in https://github.com/llvm/llvm-project/pull/226051.

>From 7ca88c2284ecde54e9f2f1305de1adcf9f20aa4c Mon Sep 17 00:00:00 2001
From: Nikita Popov <npopov at redhat.com>
Date: Thu, 24 Sep 2026 09:24:08 +0200
Subject: [PATCH] [AsmParser] Remove TBAA auto-upgrade in IR parser

---
 llvm/lib/AsmParser/LLParser.cpp      |  15 ---------------
 llvm/test/Bitcode/upgrade-tbaa.ll    |   3 +--
 llvm/test/Bitcode/upgrade-tbaa.ll.bc | Bin 0 -> 2132 bytes
 3 files changed, 1 insertion(+), 17 deletions(-)
 create mode 100644 llvm/test/Bitcode/upgrade-tbaa.ll.bc

diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp
index 408d79fe3402f5..aaee06685fc2ad 100644
--- a/llvm/lib/AsmParser/LLParser.cpp
+++ b/llvm/lib/AsmParser/LLParser.cpp
@@ -538,18 +538,6 @@ bool LLParser::validateEndOfModule(bool UpgradeDebugInfo) {
   DISubprogram::cleanupRetainedNodes(NewDistinctSPs);
   NewDistinctSPs.clear();
 
-  for (auto *Inst : InstsWithTBAATag) {
-    MDNode *MD = Inst->getMetadata(LLVMContext::MD_tbaa);
-    // With incomplete IR, the tbaa metadata may have been dropped.
-    if (!AllowIncompleteIR)
-      assert(MD && "UpgradeInstWithTBAATag should have a TBAA tag");
-    if (MD) {
-      auto *UpgradedMD = UpgradeTBAANode(*MD);
-      if (MD != UpgradedMD)
-        Inst->setMetadata(LLVMContext::MD_tbaa, UpgradedMD);
-    }
-  }
-
   // Look for intrinsic functions and CallInst that need to be upgraded.  We use
   // make_early_inc_range here because we may remove some functions.
   for (Function &F : llvm::make_early_inc_range(*M))
@@ -2552,9 +2540,6 @@ bool LLParser::parseInstructionMetadata(Instruction &Inst) {
     else
       Inst.setMetadata(MDK, N);
 
-    if (MDK == LLVMContext::MD_tbaa)
-      InstsWithTBAATag.push_back(&Inst);
-
     // If this is the end of the list, we're done.
   } while (EatIfPresent(lltok::comma));
   return false;
diff --git a/llvm/test/Bitcode/upgrade-tbaa.ll b/llvm/test/Bitcode/upgrade-tbaa.ll
index 893ba690522659..17d8204261c9cd 100644
--- a/llvm/test/Bitcode/upgrade-tbaa.ll
+++ b/llvm/test/Bitcode/upgrade-tbaa.ll
@@ -1,5 +1,4 @@
-; RUN: llvm-as < %s | llvm-dis | FileCheck %s
-; RUN: verify-uselistorder < %s
+; RUN: llvm-dis < %s.bc | FileCheck %s
 
 ; Function Attrs: nounwind
 define void @_Z4testPiPf(i32* nocapture %pI, float* nocapture %pF) {
diff --git a/llvm/test/Bitcode/upgrade-tbaa.ll.bc b/llvm/test/Bitcode/upgrade-tbaa.ll.bc
new file mode 100644
index 0000000000000000000000000000000000000000..1887cf0aed0add7db5df3e36e39377350a2edce0
GIT binary patch
literal 2132
zcmZ`*e at q+a89sB^XNvjmNNHlnch_^Em8YQQYBJTvc4hlo=18n{(nw>!gpU#zrj{7v
z@~c~9a}JkeUgb<E@*kOGRy1|e{_v`3vb1Qy9HlO`7)9NLGKB16XcCcN5i&(uHSImK
zfA+^tzVCj0_kPd&ywCHVeZu_acUv$_i(y!wfp7c%5C8JJU;XRWo905>YZ{vtvl!q(
z9fmd5S=0m83Of;Rz3wg4pV3h^$FDUB!wXuyiLL)-U(E1&o$p#}qU~6s!1Y_h6n~?o
zzn{7u{M<KfXm0q>-k<P)ooYVeKNmBYEH~=<3;O0Zho at _r`a)x~CH%JYf%Du)IZsz4
zZZO%V$r~qa{YKLnWb0q-iKHy8U8xr+rZZZ&@?pyI+H|tsb{fO3a)1pmoe0%apZKOe
zr_RBU8eRzapJ{keSkn4zFX|1)HC7=Ok2&i2v<Bv$HDXvj9L?7_eNnR>(EEZ2F0nIk
zUw!^;!h;>RbR%-}<{NMP`4`8()1CQPeXef&V%<><7OS1BLr{ZVZK}K60P*@>hU+#6
z(4mjfi)A|0qH$jl><K05ixCs!#7KJBu!E5gDRdA+9R?q}kY`qA=@752O_R(;++7gd
zN!(o=Pe#MU2YO<{FNed#WEdYEm&2TFDmJ6t6e{!N5KnGZQ8j=%s6}SeLa$qx1(6N$
zSDm*d=c?eig}ZJ`t_1EZR$E4c#0LY!D+6)_#+V#V$>AU|Y9&UWY9Z`cOzzdo!$vuh
zmM7Bj_D5CpsDz%(qg@{FE6mcBS-MyoH$-~bLNCUdWl{I{l;9``j&yCzDfSt`eg${V
zD5qf2Z>OAJ;m)jL_-s%P_sEg36dfSOgL2d;M>Dc%<t_3NM(zhtC55&;WSK*|kOgOD
zHuCI(mtC{a8*z4{L|4kp0}UH8p0#I%&YP067-;)%B0+g<oET4^?LJ76Dg*4#*kzHv
zXJIz;%q0!00=6(!QFs2bWG^bttl$PhzFlxt1m_jFRFa=Q1DVQWfJaYET8T(H{*x^V
z?arg^0D8=~=GVMzrF?9?%xnSxzsZ at E+_xliLa`?WM^SO*@{WQ6Il7AeTf=$+Pz?it
zJ+kQ^OK3MpJ}l{~9J$St+Z_4N02-pu7LVZaaY=W-gen2_lyCidSELu>%zF9Qu7%mL
zFpCxjDtOQGe2Dvv^S0p5;f@)}QS7-5)rVv!0jFOc3(KZ2zCn9DSuUab9`b$$R#7zg
z$j1ca(whdUs0>F}p_K82*HKb{IyY3R=vmA#%d<?$%WmfBP}|!)Dy#J+A;>l_Sfuxj
z#E4(+&B#BG!MlH)(YTU|YeuoJ3Y{RQA~0s~Tb}cYEI?h!Gw0$hq3(Bhw8xQqCEZ?t
zJWxZS?UHVXBg?Ch>_;AHbby%9%cgV3bBYsmI49VPz#;BPNv<O90y1Y5Ls!!hNEZ|}
zOJ9n!`x>a@^d~w{AjE-M>~ZJ;-zrK#@_0s`OsNtzbwdy+qBE(ST2-8X5F9xrxzw}<
z*~OVPkzNDwc-Un~(|WOl_JXL&qg at KhN_H6S#+ve<YJtxQyBq;EzDdtXppecSD5S1)
zPH{oZg79iFSIN-pdHRz0ztSo*CGbL=U7MwM#IBc#ZvtxK9c<^Jxgfrgh+5 at dj|~2u
zOke+7++Ks)ne)1HLT6eH?wrHj70Em=fkPd0s%s3NqC*~5yzGL8T@|O_CmsgS0fj2i
zD=2gaw8W!>6xu7HJ6WWvh?f*8oRP-{z*fX7et9G;j{!enJYrP^GcllM3YH(^<OueA
z=xaZK-qd(43^ueAV?CZE7y);*kN+Qo=U+#l-tAy*ETOFcI`rwCD%!6$J_?Xvmd2zS
z3f8j9T3Ky7Il-O9o$dAwaBiM~$VE|en%u^~<763>R&9LjAwe_cFxt*$02sJ91MfP%
zlAKB40e80#tcdj87+ZlRAhJ-(wKB6IdOOfg7(JoTzDH$aA71y6jmB}vS9PCiWS}C#
z$=c5xNx=-&To)Ye*`+w6HrRX<bd at C-<Lo^Py`*85<MbihN9n4E+^5hJ4|y*e>yd|f
zIoeYNW^$5yMsnR$r3EUruS%}0GIdq$eoFue+SDPi*`^)K^LM at UW}LyWFDVSu0mnqq
z1&X>^OD7|_pfRQt^_wDEF${iKt9~l$fg=w4Vl(!@sL at Yx|JGn-5yOtay%XOnq|P3x
zH^V8WJo_9rI2673-q2w9V)VjLlzV$XjJ!4YUijS$oN!7wd6GNt^Lj(?UKFF|DN*8D
z%!&DRj#6=4rn*d1`6*moTm9A@<y^mQ(EoJ|(|+0A3==echZugW<M=-rykVG9+lINr
z`!+<KNMLtWn6>Sv at IRmd&W_+S=H4Hjj$Rmv1_lEm+v%71m-u%Eqpp!?|KQN8wYmQR
D{5S^~

literal 0
HcmV?d00001




More information about the llvm-commits mailing list