From: Rafael Espindola Date: Tue, 6 Jan 2015 22:55:16 +0000 (+0000) Subject: Change the .ll syntax for comdats and add a syntactic sugar. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=83a362cde8dda902ae516dbb1a721735a338abbb;p=platform%2Fupstream%2Fllvm.git Change the .ll syntax for comdats and add a syntactic sugar. In order to make comdats always explicit in the IR, we decided to make the syntax a bit more compact for the case of a GlobalObject in a comdat with the same name. Just dropping the $name causes problems for @foo = globabl i32 0, comdat $bar = comdat ... and declare void @foo() comdat $bar = comdat ... So the syntax is changed to @g1 = globabl i32 0, comdat($c1) @g2 = globabl i32 0, comdat and declare void @foo() comdat($c1) declare void @foo() comdat llvm-svn: 225302 --- diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst index 8e9d420..519fe20 100644 --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -596,7 +596,8 @@ Syntax:: [@ =] [Linkage] [Visibility] [DLLStorageClass] [ThreadLocal] [unnamed_addr] [AddrSpace] [ExternallyInitialized] [] - [, section "name"] [, align ] + [, section "name"] [, comdat [($name)]] + [, align ] For example, the following defines a global in a numbered address space with an initializer, section, and alignment: @@ -681,7 +682,7 @@ Syntax:: define [linkage] [visibility] [DLLStorageClass] [cconv] [ret attrs] @ ([argument list]) - [unnamed_addr] [fn Attrs] [section "name"] [comdat $] + [unnamed_addr] [fn Attrs] [section "name"] [comdat [($name)]] [align N] [gc] [prefix Constant] [prologue Constant] { ... } The argument list is a comma seperated sequence of arguments where each @@ -775,12 +776,21 @@ the COMDAT key's section is the largest: .. code-block:: llvm $foo = comdat largest - @foo = global i32 2, comdat $foo + @foo = global i32 2, comdat($foo) - define void @bar() comdat $foo { + define void @bar() comdat($foo) { ret void } +As a syntactic sugar the ``$name`` can be omitted if the name is the same as +the global name: + +.. code-block:: llvm + + $foo = comdat any + @foo = global i32 2, comdat + + In a COFF object file, this will create a COMDAT section with selection kind ``IMAGE_COMDAT_SELECT_LARGEST`` containing the contents of the ``@foo`` symbol and another COMDAT section with selection kind @@ -803,8 +813,8 @@ For example: $foo = comdat any $bar = comdat any - @g1 = global i32 42, section "sec", comdat $foo - @g2 = global i32 42, section "sec", comdat $bar + @g1 = global i32 42, section "sec", comdat($foo) + @g2 = global i32 42, section "sec", comdat($bar) From the object file perspective, this requires the creation of two sections with the same name. This is necessary because both globals belong to different diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp index 0ac07cc..232c580 100644 --- a/llvm/lib/AsmParser/LLParser.cpp +++ b/llvm/lib/AsmParser/LLParser.cpp @@ -850,7 +850,7 @@ bool LLParser::ParseGlobal(const std::string &Name, LocTy NameLoc, GV->setAlignment(Alignment); } else { Comdat *C; - if (parseOptionalComdat(C)) + if (parseOptionalComdat(Name, C)) return true; if (C) GV->setComdat(C); @@ -2899,16 +2899,26 @@ bool LLParser::ParseGlobalTypeAndValue(Constant *&V) { ParseGlobalValue(Ty, V); } -bool LLParser::parseOptionalComdat(Comdat *&C) { +bool LLParser::parseOptionalComdat(StringRef GlobalName, Comdat *&C) { C = nullptr; + + LocTy KwLoc = Lex.getLoc(); if (!EatIfPresent(lltok::kw_comdat)) return false; - if (Lex.getKind() != lltok::ComdatVar) - return TokError("expected comdat variable"); - LocTy Loc = Lex.getLoc(); - StringRef Name = Lex.getStrVal(); - C = getComdat(Name, Loc); - Lex.Lex(); + + if (EatIfPresent(lltok::lparen)) { + if (Lex.getKind() != lltok::ComdatVar) + return TokError("expected comdat variable"); + C = getComdat(Lex.getStrVal(), Lex.getLoc()); + Lex.Lex(); + if (ParseToken(lltok::rparen, "expected ')' after comdat var")) + return true; + } else { + if (GlobalName.empty()) + return TokError("comdat cannot be unnamed"); + C = getComdat(GlobalName, KwLoc); + } + return false; } @@ -3262,7 +3272,7 @@ bool LLParser::ParseFunctionHeader(Function *&Fn, bool isDefine) { BuiltinLoc) || (EatIfPresent(lltok::kw_section) && ParseStringConstant(Section)) || - parseOptionalComdat(C) || + parseOptionalComdat(FunctionName, C) || ParseOptionalAlignment(Alignment) || (EatIfPresent(lltok::kw_gc) && ParseStringConstant(GC)) || diff --git a/llvm/lib/AsmParser/LLParser.h b/llvm/lib/AsmParser/LLParser.h index 564a1de..d8d272b 100644 --- a/llvm/lib/AsmParser/LLParser.h +++ b/llvm/lib/AsmParser/LLParser.h @@ -385,7 +385,7 @@ namespace llvm { bool ParseGlobalValue(Type *Ty, Constant *&V); bool ParseGlobalTypeAndValue(Constant *&V); bool ParseGlobalValueVector(SmallVectorImpl &Elts); - bool parseOptionalComdat(Comdat *&C); + bool parseOptionalComdat(StringRef GlobalName, Comdat *&C); bool ParseMetadataAsValue(Value *&V, PerFunctionState &PFS); bool ParseValueAsMetadata(Metadata *&MD, PerFunctionState *PFS); bool ParseMetadata(Metadata *&MD, PerFunctionState *PFS); diff --git a/llvm/lib/IR/AsmWriter.cpp b/llvm/lib/IR/AsmWriter.cpp index e883cba..175e20f 100644 --- a/llvm/lib/IR/AsmWriter.cpp +++ b/llvm/lib/IR/AsmWriter.cpp @@ -1683,6 +1683,24 @@ static void PrintThreadLocalModel(GlobalVariable::ThreadLocalMode TLM, } } +static void maybePrintComdat(formatted_raw_ostream &Out, + const GlobalObject &GO) { + const Comdat *C = GO.getComdat(); + if (!C) + return; + + if (isa(GO)) + Out << ','; + Out << " comdat"; + + if (GO.getName() == C->getName()) + return; + + Out << '('; + PrintLLVMName(Out, C->getName(), ComdatPrefix); + Out << ')'; +} + void AssemblyWriter::printGlobal(const GlobalVariable *GV) { if (GV->isMaterializable()) Out << "; Materializable\n"; @@ -1716,10 +1734,7 @@ void AssemblyWriter::printGlobal(const GlobalVariable *GV) { PrintEscapedString(GV->getSection(), Out); Out << '"'; } - if (GV->hasComdat()) { - Out << ", comdat "; - PrintLLVMName(Out, GV->getComdat()->getName(), ComdatPrefix); - } + maybePrintComdat(Out, *GV); if (GV->getAlignment()) Out << ", align " << GV->getAlignment(); @@ -1900,10 +1915,7 @@ void AssemblyWriter::printFunction(const Function *F) { PrintEscapedString(F->getSection(), Out); Out << '"'; } - if (F->hasComdat()) { - Out << " comdat "; - PrintLLVMName(Out, F->getComdat()->getName(), ComdatPrefix); - } + maybePrintComdat(Out, *F); if (F->getAlignment()) Out << " align " << F->getAlignment(); if (F->hasGC()) diff --git a/llvm/test/Assembler/invalid-comdat.ll b/llvm/test/Assembler/invalid-comdat.ll index 987e1e1..7351999 100644 --- a/llvm/test/Assembler/invalid-comdat.ll +++ b/llvm/test/Assembler/invalid-comdat.ll @@ -1,4 +1,4 @@ ; RUN: not llvm-as < %s 2>&1 | FileCheck %s -@v = global i32 0, comdat $v +@v = global i32 0, comdat($v) ; CHECK: use of undefined comdat '$v' diff --git a/llvm/test/Assembler/unnamed-comdat.ll b/llvm/test/Assembler/unnamed-comdat.ll new file mode 100644 index 0000000..8aa0f78c9 --- /dev/null +++ b/llvm/test/Assembler/unnamed-comdat.ll @@ -0,0 +1,6 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s +; CHECK: comdat cannot be unnamed + +define void @0() comdat { + ret void +} diff --git a/llvm/test/CodeGen/X86/coff-comdat.ll b/llvm/test/CodeGen/X86/coff-comdat.ll index ac4546d..dcbbe10 100644 --- a/llvm/test/CodeGen/X86/coff-comdat.ll +++ b/llvm/test/CodeGen/X86/coff-comdat.ll @@ -1,58 +1,58 @@ ; RUN: llc -mtriple i386-pc-win32 < %s | FileCheck %s $f1 = comdat any -@v1 = global i32 0, comdat $f1 -define void @f1() comdat $f1 { +@v1 = global i32 0, comdat($f1) +define void @f1() comdat($f1) { ret void } $f2 = comdat exactmatch -@v2 = global i32 0, comdat $f2 -define void @f2() comdat $f2 { +@v2 = global i32 0, comdat($f2) +define void @f2() comdat($f2) { ret void } $f3 = comdat largest -@v3 = global i32 0, comdat $f3 -define void @f3() comdat $f3 { +@v3 = global i32 0, comdat($f3) +define void @f3() comdat($f3) { ret void } $f4 = comdat noduplicates -@v4 = global i32 0, comdat $f4 -define void @f4() comdat $f4 { +@v4 = global i32 0, comdat($f4) +define void @f4() comdat($f4) { ret void } $f5 = comdat samesize -@v5 = global i32 0, comdat $f5 -define void @f5() comdat $f5 { +@v5 = global i32 0, comdat($f5) +define void @f5() comdat($f5) { ret void } $f6 = comdat samesize -@v6 = global i32 0, comdat $f6 -@f6 = global i32 0, comdat $f6 +@v6 = global i32 0, comdat($f6) +@f6 = global i32 0, comdat($f6) $"\01@f7@0" = comdat any -define x86_fastcallcc void @"\01@v7@0"() comdat $"\01@f7@0" { +define x86_fastcallcc void @"\01@v7@0"() comdat($"\01@f7@0") { ret void } -define x86_fastcallcc void @"\01@f7@0"() comdat $"\01@f7@0" { +define x86_fastcallcc void @"\01@f7@0"() comdat($"\01@f7@0") { ret void } $f8 = comdat any -define x86_fastcallcc void @v8() comdat $f8 { +define x86_fastcallcc void @v8() comdat($f8) { ret void } -define x86_fastcallcc void @f8() comdat $f8 { +define x86_fastcallcc void @f8() comdat($f8) { ret void } $vftable = comdat largest -@some_name = private unnamed_addr constant [2 x i8*] zeroinitializer, comdat $vftable +@some_name = private unnamed_addr constant [2 x i8*] zeroinitializer, comdat($vftable) @vftable = alias getelementptr([2 x i8*]* @some_name, i32 0, i32 1) ; CHECK: .section .text,"xr",discard,_f1 diff --git a/llvm/test/CodeGen/X86/coff-comdat2.ll b/llvm/test/CodeGen/X86/coff-comdat2.ll index 58bc04e..a417d09 100644 --- a/llvm/test/CodeGen/X86/coff-comdat2.ll +++ b/llvm/test/CodeGen/X86/coff-comdat2.ll @@ -5,5 +5,5 @@ target triple = "i686-pc-windows-msvc" $foo = comdat largest @foo = global i32 0 -@bar = global i32 0, comdat $foo +@bar = global i32 0, comdat($foo) ; CHECK: Associative COMDAT symbol 'foo' is not a key for its COMDAT. diff --git a/llvm/test/CodeGen/X86/coff-comdat3.ll b/llvm/test/CodeGen/X86/coff-comdat3.ll index 76e464b..01651ce 100644 --- a/llvm/test/CodeGen/X86/coff-comdat3.ll +++ b/llvm/test/CodeGen/X86/coff-comdat3.ll @@ -4,5 +4,5 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" target triple = "i686-pc-windows-msvc" $foo = comdat largest -@bar = global i32 0, comdat $foo +@bar = global i32 0, comdat($foo) ; CHECK: Associative COMDAT symbol 'foo' does not exist. diff --git a/llvm/test/CodeGen/X86/elf-comdat.ll b/llvm/test/CodeGen/X86/elf-comdat.ll index c7e6df7..35d8d6f 100644 --- a/llvm/test/CodeGen/X86/elf-comdat.ll +++ b/llvm/test/CodeGen/X86/elf-comdat.ll @@ -1,8 +1,8 @@ ; RUN: llc -mtriple x86_64-pc-linux-gnu < %s | FileCheck %s $f = comdat any -@v = global i32 0, comdat $f -define void @f() comdat $f { +@v = global i32 0, comdat($f) +define void @f() comdat($f) { ret void } ; CHECK: .section .text.f,"axG",@progbits,f,comdat diff --git a/llvm/test/CodeGen/X86/elf-comdat2.ll b/llvm/test/CodeGen/X86/elf-comdat2.ll index 209da39..786cec7 100644 --- a/llvm/test/CodeGen/X86/elf-comdat2.ll +++ b/llvm/test/CodeGen/X86/elf-comdat2.ll @@ -1,7 +1,7 @@ ; RUN: llc -mtriple x86_64-pc-linux-gnu < %s | FileCheck %s $foo = comdat any -@bar = global i32 42, comdat $foo +@bar = global i32 42, comdat($foo) @foo = global i32 42 ; CHECK: .type bar,@object diff --git a/llvm/test/CodeGen/X86/macho-comdat.ll b/llvm/test/CodeGen/X86/macho-comdat.ll index 3c2d997..6056047 100644 --- a/llvm/test/CodeGen/X86/macho-comdat.ll +++ b/llvm/test/CodeGen/X86/macho-comdat.ll @@ -2,5 +2,5 @@ ; RUN: FileCheck < %t %s $f = comdat any -@v = global i32 0, comdat $f +@v = global i32 0, comdat($f) ; CHECK: LLVM ERROR: MachO doesn't support COMDATs, 'f' cannot be lowered. diff --git a/llvm/test/Feature/comdat.ll b/llvm/test/Feature/comdat.ll index 1e878bb..c2a9d63 100644 --- a/llvm/test/Feature/comdat.ll +++ b/llvm/test/Feature/comdat.ll @@ -6,16 +6,16 @@ $f = comdat any $f2 = comdat any ; CHECK-NOT: f2 -@v = global i32 0, comdat $f -; CHECK: @v = global i32 0, comdat $f +@v = global i32 0, comdat($f) +; CHECK: @v = global i32 0, comdat($f) @a = alias i32* @v ; CHECK: @a = alias i32* @v{{$}} -define void @f() comdat $f { +define void @f() comdat($f) { ret void } -; CHECK: define void @f() comdat $f +; CHECK: define void @f() comdat { $i = comdat largest -@i = internal global i32 0, comdat $i +@i = internal global i32 0, comdat($i) diff --git a/llvm/test/Instrumentation/AddressSanitizer/do-not-touch-comdat-global.ll b/llvm/test/Instrumentation/AddressSanitizer/do-not-touch-comdat-global.ll index 8d14e83..fcc166e 100644 --- a/llvm/test/Instrumentation/AddressSanitizer/do-not-touch-comdat-global.ll +++ b/llvm/test/Instrumentation/AddressSanitizer/do-not-touch-comdat-global.ll @@ -5,7 +5,7 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" target triple = "i686-pc-windows-msvc" ; no action should be taken for these globals $global_noinst = comdat largest -@aliasee = private unnamed_addr constant [2 x i8] [i8 1, i8 2], comdat $global_noinst +@aliasee = private unnamed_addr constant [2 x i8] [i8 1, i8 2], comdat($global_noinst) @global_noinst = unnamed_addr alias [2 x i8]* @aliasee ; CHECK-NOT: {{asan_gen.*global_noinst}} ; CHECK-DAG: @global_noinst = unnamed_addr alias [2 x i8]* @aliasee diff --git a/llvm/test/Linker/Inputs/comdat.ll b/llvm/test/Linker/Inputs/comdat.ll index fdcca49..74a805c 100644 --- a/llvm/test/Linker/Inputs/comdat.ll +++ b/llvm/test/Linker/Inputs/comdat.ll @@ -2,19 +2,19 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" target triple = "i686-pc-windows-msvc" $foo = comdat largest -@foo = global i64 43, comdat $foo +@foo = global i64 43, comdat($foo) -define i32 @bar() comdat $foo { +define i32 @bar() comdat($foo) { ret i32 43 } $qux = comdat largest -@qux = global i32 13, comdat $qux -@in_unselected_group = global i32 13, comdat $qux +@qux = global i32 13, comdat($qux) +@in_unselected_group = global i32 13, comdat($qux) -define i32 @baz() comdat $qux { +define i32 @baz() comdat($qux) { ret i32 13 } $any = comdat any -@any = global i64 7, comdat $any +@any = global i64 7, comdat($any) diff --git a/llvm/test/Linker/Inputs/comdat2.ll b/llvm/test/Linker/Inputs/comdat2.ll index 9e18304..ed2af62 100644 --- a/llvm/test/Linker/Inputs/comdat2.ll +++ b/llvm/test/Linker/Inputs/comdat2.ll @@ -1,2 +1,2 @@ $foo = comdat largest -@foo = global i64 43, comdat $foo +@foo = global i64 43, comdat($foo) diff --git a/llvm/test/Linker/Inputs/comdat3.ll b/llvm/test/Linker/Inputs/comdat3.ll index 06f08b9..a1b730f 100644 --- a/llvm/test/Linker/Inputs/comdat3.ll +++ b/llvm/test/Linker/Inputs/comdat3.ll @@ -1,2 +1,2 @@ $foo = comdat noduplicates -@foo = global i64 43, comdat $foo +@foo = global i64 43, comdat($foo) diff --git a/llvm/test/Linker/Inputs/comdat4.ll b/llvm/test/Linker/Inputs/comdat4.ll index bbfe3f7..5b4b812 100644 --- a/llvm/test/Linker/Inputs/comdat4.ll +++ b/llvm/test/Linker/Inputs/comdat4.ll @@ -2,4 +2,4 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" target triple = "i686-pc-windows-msvc" $foo = comdat samesize -@foo = global i64 42, comdat $foo +@foo = global i64 42, comdat($foo) diff --git a/llvm/test/Linker/Inputs/comdat5.ll b/llvm/test/Linker/Inputs/comdat5.ll index 3af6333..98c42b7 100644 --- a/llvm/test/Linker/Inputs/comdat5.ll +++ b/llvm/test/Linker/Inputs/comdat5.ll @@ -3,7 +3,7 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" $foo = comdat largest @zed = external constant i8 -@some_name = private unnamed_addr constant [2 x i8*] [i8* @zed, i8* bitcast (void ()* @bar to i8*)], comdat $foo +@some_name = private unnamed_addr constant [2 x i8*] [i8* @zed, i8* bitcast (void ()* @bar to i8*)], comdat($foo) @foo = alias getelementptr([2 x i8*]* @some_name, i32 0, i32 1) declare void @bar() unnamed_addr diff --git a/llvm/test/Linker/Inputs/comdat8.ll b/llvm/test/Linker/Inputs/comdat8.ll index eaa9625..a2833b0 100644 --- a/llvm/test/Linker/Inputs/comdat8.ll +++ b/llvm/test/Linker/Inputs/comdat8.ll @@ -1,4 +1,4 @@ $c1 = comdat largest -@some_name = private unnamed_addr constant i32 42, comdat $c1 +@some_name = private unnamed_addr constant i32 42, comdat($c1) @c1 = alias i32* @some_name diff --git a/llvm/test/Linker/Inputs/visibility.ll b/llvm/test/Linker/Inputs/visibility.ll index 2ab58fd..2cd112e 100644 --- a/llvm/test/Linker/Inputs/visibility.ll +++ b/llvm/test/Linker/Inputs/visibility.ll @@ -4,7 +4,7 @@ $c1 = comdat any @v1 = weak hidden global i32 0 @v2 = weak protected global i32 0 @v3 = weak hidden global i32 0 -@v4 = hidden global i32 1, comdat $c1 +@v4 = hidden global i32 1, comdat($c1) ; Aliases @a1 = weak hidden alias i32* @v1 diff --git a/llvm/test/Linker/comdat.ll b/llvm/test/Linker/comdat.ll index 4d2aef7..2a2ec3b 100644 --- a/llvm/test/Linker/comdat.ll +++ b/llvm/test/Linker/comdat.ll @@ -3,30 +3,30 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" target triple = "i686-pc-windows-msvc" $foo = comdat largest -@foo = global i32 42, comdat $foo +@foo = global i32 42, comdat($foo) -define i32 @bar() comdat $foo { +define i32 @bar() comdat($foo) { ret i32 42 } $qux = comdat largest -@qux = global i64 12, comdat $qux +@qux = global i64 12, comdat($qux) -define i32 @baz() comdat $qux { +define i32 @baz() comdat($qux) { ret i32 12 } $any = comdat any -@any = global i64 6, comdat $any +@any = global i64 6, comdat($any) ; CHECK: $qux = comdat largest ; CHECK: $foo = comdat largest ; CHECK: $any = comdat any -; CHECK: @qux = global i64 12, comdat $qux -; CHECK: @any = global i64 6, comdat $any -; CHECK: @foo = global i64 43, comdat $foo +; CHECK: @qux = global i64 12, comdat{{$}} +; CHECK: @any = global i64 6, comdat{{$}} +; CHECK: @foo = global i64 43, comdat{{$}} ; CHECK-NOT: @in_unselected_group = global i32 13, comdat $qux -; CHECK: define i32 @baz() comdat $qux -; CHECK: define i32 @bar() comdat $foo +; CHECK: define i32 @baz() comdat($qux) +; CHECK: define i32 @bar() comdat($foo) diff --git a/llvm/test/Linker/comdat2.ll b/llvm/test/Linker/comdat2.ll index 60c3d7c..ba8115d 100644 --- a/llvm/test/Linker/comdat2.ll +++ b/llvm/test/Linker/comdat2.ll @@ -3,5 +3,5 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" target triple = "i686-pc-windows-msvc" $foo = comdat samesize -@foo = global i32 42, comdat $foo +@foo = global i32 42, comdat($foo) ; CHECK: Linking COMDATs named 'foo': invalid selection kinds! diff --git a/llvm/test/Linker/comdat3.ll b/llvm/test/Linker/comdat3.ll index f0d9a48..3b5db0a 100644 --- a/llvm/test/Linker/comdat3.ll +++ b/llvm/test/Linker/comdat3.ll @@ -1,5 +1,5 @@ ; RUN: not llvm-link %s %p/Inputs/comdat2.ll -S -o - 2>&1 | FileCheck %s $foo = comdat largest -@foo = global i32 43, comdat $foo +@foo = global i32 43, comdat($foo) ; CHECK: Linking COMDATs named 'foo': can't do size dependent selection without DataLayout! diff --git a/llvm/test/Linker/comdat4.ll b/llvm/test/Linker/comdat4.ll index 50c1778..cf7ac5f 100644 --- a/llvm/test/Linker/comdat4.ll +++ b/llvm/test/Linker/comdat4.ll @@ -1,5 +1,5 @@ ; RUN: not llvm-link %s %p/Inputs/comdat3.ll -S -o - 2>&1 | FileCheck %s $foo = comdat noduplicates -@foo = global i64 43, comdat $foo +@foo = global i64 43, comdat($foo) ; CHECK: Linking COMDATs named 'foo': noduplicates has been violated! diff --git a/llvm/test/Linker/comdat5.ll b/llvm/test/Linker/comdat5.ll index 011fb8c..759688e 100644 --- a/llvm/test/Linker/comdat5.ll +++ b/llvm/test/Linker/comdat5.ll @@ -3,5 +3,5 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" target triple = "i686-pc-windows-msvc" $foo = comdat samesize -@foo = global i32 42, comdat $foo +@foo = global i32 42, comdat($foo) ; CHECK: Linking COMDATs named 'foo': SameSize violated! diff --git a/llvm/test/Linker/comdat6.ll b/llvm/test/Linker/comdat6.ll index 497bf08..b5360a7c 100644 --- a/llvm/test/Linker/comdat6.ll +++ b/llvm/test/Linker/comdat6.ll @@ -3,7 +3,7 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" $foo = comdat largest -@foo = linkonce_odr unnamed_addr constant [1 x i8*] [i8* bitcast (void ()* @bar to i8*)], comdat $foo +@foo = linkonce_odr unnamed_addr constant [1 x i8*] [i8* bitcast (void ()* @bar to i8*)], comdat($foo) ; CHECK: @foo = alias getelementptr inbounds ([2 x i8*]* @some_name, i32 0, i32 1) diff --git a/llvm/test/Linker/comdat7.ll b/llvm/test/Linker/comdat7.ll index d7e5e2d..ef938a7 100644 --- a/llvm/test/Linker/comdat7.ll +++ b/llvm/test/Linker/comdat7.ll @@ -2,7 +2,7 @@ $c1 = comdat largest -define void @c1() comdat $c1 { +define void @c1() comdat($c1) { ret void } ; CHECK: GlobalVariable required for data dependent selection! diff --git a/llvm/test/Linker/comdat8.ll b/llvm/test/Linker/comdat8.ll index e6da583..5ca352a 100644 --- a/llvm/test/Linker/comdat8.ll +++ b/llvm/test/Linker/comdat8.ll @@ -2,7 +2,7 @@ $c1 = comdat largest -@some_name = private unnamed_addr constant i32 42, comdat $c1 +@some_name = private unnamed_addr constant i32 42, comdat($c1) @c1 = alias i8* inttoptr (i32 ptrtoint (i32* @some_name to i32) to i8*) ; CHECK: COMDAT key involves incomputable alias size. diff --git a/llvm/test/Linker/comdat9.ll b/llvm/test/Linker/comdat9.ll index c48d256..f155a6e 100644 --- a/llvm/test/Linker/comdat9.ll +++ b/llvm/test/Linker/comdat9.ll @@ -2,18 +2,18 @@ $c = comdat any @a = alias void ()* @f -define internal void @f() comdat $c { +define internal void @f() comdat($c) { ret void } ; CHECK-DAG: $c = comdat any ; CHECK-DAG: @a = alias void ()* @f -; CHECK-DAG: define internal void @f() comdat $c +; CHECK-DAG: define internal void @f() comdat($c) $f2 = comdat largest -define internal void @f2() comdat $f2 { +define internal void @f2() comdat($f2) { ret void } ; CHECK-DAG: $f2 = comdat largest -; CHECK-DAG: define internal void @f2() comdat $f2 +; CHECK-DAG: define internal void @f2() comdat { diff --git a/llvm/test/Linker/constructor-comdat.ll b/llvm/test/Linker/constructor-comdat.ll index 42e2d83..dfc8992 100644 --- a/llvm/test/Linker/constructor-comdat.ll +++ b/llvm/test/Linker/constructor-comdat.ll @@ -7,7 +7,7 @@ $_ZN3fooIiEC5Ev = comdat any @_ZN3fooIiEC1Ev = weak_odr alias void ()* @_ZN3fooIiEC2Ev ; CHECK: @_ZN3fooIiEC1Ev = weak_odr alias void ()* @_ZN3fooIiEC2Ev -; CHECK: define weak_odr void @_ZN3fooIiEC2Ev() comdat $_ZN3fooIiEC5Ev { -define weak_odr void @_ZN3fooIiEC2Ev() comdat $_ZN3fooIiEC5Ev { +; CHECK: define weak_odr void @_ZN3fooIiEC2Ev() comdat($_ZN3fooIiEC5Ev) { +define weak_odr void @_ZN3fooIiEC2Ev() comdat($_ZN3fooIiEC5Ev) { ret void } diff --git a/llvm/test/Linker/visibility.ll b/llvm/test/Linker/visibility.ll index 6436197..4938d7a 100644 --- a/llvm/test/Linker/visibility.ll +++ b/llvm/test/Linker/visibility.ll @@ -17,8 +17,8 @@ $c1 = comdat any ; CHECK-DAG: @v3 = hidden global i32 0 @v3 = protected global i32 0 -; CHECK-DAG: @v4 = hidden global i32 1, comdat $c1 -@v4 = global i32 1, comdat $c1 +; CHECK-DAG: @v4 = hidden global i32 1, comdat($c1) +@v4 = global i32 1, comdat($c1) ; Aliases ; CHECK: @a1 = hidden alias i32* @v1 diff --git a/llvm/test/Transforms/GlobalDCE/pr20981.ll b/llvm/test/Transforms/GlobalDCE/pr20981.ll index 92d2840..0eaa6b8 100644 --- a/llvm/test/Transforms/GlobalDCE/pr20981.ll +++ b/llvm/test/Transforms/GlobalDCE/pr20981.ll @@ -6,10 +6,10 @@ $c1 = comdat any @a1 = linkonce_odr alias void ()* @f1 ; CHECK: @a1 = linkonce_odr alias void ()* @f1 -define linkonce_odr void @f1() comdat $c1 { +define linkonce_odr void @f1() comdat($c1) { ret void } -; CHECK: define linkonce_odr void @f1() comdat $c1 +; CHECK: define linkonce_odr void @f1() comdat($c1) define void @g() { call void @f1() diff --git a/llvm/test/Transforms/GlobalOpt/pr21191.ll b/llvm/test/Transforms/GlobalOpt/pr21191.ll index 39b8eee..34e15cb 100644 --- a/llvm/test/Transforms/GlobalOpt/pr21191.ll +++ b/llvm/test/Transforms/GlobalOpt/pr21191.ll @@ -3,15 +3,15 @@ $c = comdat any ; CHECK: $c = comdat any -define linkonce_odr void @foo() comdat $c { +define linkonce_odr void @foo() comdat($c) { ret void } -; CHECK: define linkonce_odr void @foo() comdat $c +; CHECK: define linkonce_odr void @foo() comdat($c) -define linkonce_odr void @bar() comdat $c { +define linkonce_odr void @bar() comdat($c) { ret void } -; CHECK: define linkonce_odr void @bar() comdat $c +; CHECK: define linkonce_odr void @bar() comdat($c) define void @zed() { call void @foo() diff --git a/llvm/test/Transforms/GlobalOpt/preserve-comdats.ll b/llvm/test/Transforms/GlobalOpt/preserve-comdats.ll index 08188b9..0148f00 100644 --- a/llvm/test/Transforms/GlobalOpt/preserve-comdats.ll +++ b/llvm/test/Transforms/GlobalOpt/preserve-comdats.ll @@ -2,9 +2,9 @@ $comdat_global = comdat any -@comdat_global = weak_odr global i8 0, comdat $comdat_global +@comdat_global = weak_odr global i8 0, comdat($comdat_global) @simple_global = internal global i8 0 -; CHECK: @comdat_global = weak_odr global i8 0, comdat $comdat_global +; CHECK: @comdat_global = weak_odr global i8 0, comdat{{$}} ; CHECK: @simple_global = internal global i8 42 @llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }] [ @@ -20,7 +20,7 @@ define void @init_comdat_global() { } ; CHECK: define void @init_comdat_global() -define internal void @init_simple_global() comdat $comdat_global { +define internal void @init_simple_global() comdat($comdat_global) { store i8 42, i8* @simple_global ret void } diff --git a/llvm/test/Transforms/Inline/pr21206.ll b/llvm/test/Transforms/Inline/pr21206.ll index 1a4366e..e460030 100644 --- a/llvm/test/Transforms/Inline/pr21206.ll +++ b/llvm/test/Transforms/Inline/pr21206.ll @@ -3,15 +3,15 @@ $c = comdat any ; CHECK: $c = comdat any -define linkonce_odr void @foo() comdat $c { +define linkonce_odr void @foo() comdat($c) { ret void } -; CHECK: define linkonce_odr void @foo() comdat $c +; CHECK: define linkonce_odr void @foo() comdat($c) -define linkonce_odr void @bar() comdat $c { +define linkonce_odr void @bar() comdat($c) { ret void } -; CHECK: define linkonce_odr void @bar() comdat $c +; CHECK: define linkonce_odr void @bar() comdat($c) define void()* @zed() { ret void()* @foo diff --git a/llvm/test/Verifier/comdat.ll b/llvm/test/Verifier/comdat.ll index ca47429..dcf67d8 100644 --- a/llvm/test/Verifier/comdat.ll +++ b/llvm/test/Verifier/comdat.ll @@ -1,5 +1,5 @@ ; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s $v = comdat any -@v = common global i32 0, comdat $v +@v = common global i32 0, comdat($v) ; CHECK: 'common' global may not be in a Comdat! diff --git a/llvm/test/Verifier/comdat2.ll b/llvm/test/Verifier/comdat2.ll index d78030c..9d892b9 100644 --- a/llvm/test/Verifier/comdat2.ll +++ b/llvm/test/Verifier/comdat2.ll @@ -1,5 +1,5 @@ ; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s $v = comdat any -@v = private global i32 0, comdat $v +@v = private global i32 0, comdat($v) ; CHECK: comdat global value has private linkage diff --git a/llvm/test/tools/gold/Inputs/comdat.ll b/llvm/test/tools/gold/Inputs/comdat.ll index e9e4704..8b699d4 100644 --- a/llvm/test/tools/gold/Inputs/comdat.ll +++ b/llvm/test/tools/gold/Inputs/comdat.ll @@ -1,7 +1,7 @@ $c2 = comdat any -@v1 = weak_odr global i32 41, comdat $c2 -define weak_odr protected i32 @f1(i8* %this) comdat $c2 { +@v1 = weak_odr global i32 41, comdat($c2) +define weak_odr protected i32 @f1(i8* %this) comdat($c2) { bb20: store i8* %this, i8** null br label %bb21 diff --git a/llvm/test/tools/gold/comdat.ll b/llvm/test/tools/gold/comdat.ll index ba3abce..2edd782 100644 --- a/llvm/test/tools/gold/comdat.ll +++ b/llvm/test/tools/gold/comdat.ll @@ -6,8 +6,8 @@ $c1 = comdat any -@v1 = weak_odr global i32 42, comdat $c1 -define weak_odr i32 @f1(i8*) comdat $c1 { +@v1 = weak_odr global i32 42, comdat($c1) +define weak_odr i32 @f1(i8*) comdat($c1) { bb10: br label %bb11 bb11: @@ -27,7 +27,7 @@ bb11: ; CHECK: $c1 = comdat any ; CHECK: $c2 = comdat any -; CHECK: @v1 = weak_odr global i32 42, comdat $c1 +; CHECK: @v1 = weak_odr global i32 42, comdat($c1) ; CHECK: @r11 = global i32* @v1{{$}} ; CHECK: @r12 = global i32 (i8*)* @f1{{$}} @@ -35,7 +35,7 @@ bb11: ; CHECK: @r21 = global i32* @v1{{$}} ; CHECK: @r22 = global i32 (i8*)* @f1{{$}} -; CHECK: @v11 = internal global i32 41, comdat $c2 +; CHECK: @v11 = internal global i32 41, comdat($c2) ; CHECK: @a11 = alias i32* @v1{{$}} ; CHECK: @a12 = alias bitcast (i32* @v1 to i16*) @@ -49,14 +49,14 @@ bb11: ; CHECK: @a23 = alias i32 (i8*)* @f12{{$}} ; CHECK: @a24 = alias bitcast (i32 (i8*)* @f12 to i16*) -; CHECK: define weak_odr protected i32 @f1(i8*) comdat $c1 { +; CHECK: define weak_odr protected i32 @f1(i8*) comdat($c1) { ; CHECK-NEXT: bb10: ; CHECK-NEXT: br label %bb11{{$}} ; CHECK: bb11: ; CHECK-NEXT: ret i32 42 ; CHECK-NEXT: } -; CHECK: define internal i32 @f12(i8* %this) comdat $c2 { +; CHECK: define internal i32 @f12(i8* %this) comdat($c2) { ; CHECK-NEXT: bb20: ; CHECK-NEXT: store i8* %this, i8** null ; CHECK-NEXT: br label %bb21