From criswell at cs.uiuc.edu Mon Oct 27 09:15:05 2003 From: criswell at cs.uiuc.edu (John Criswell) Date: Mon Oct 27 09:15:05 2003 Subject: [llvm-commits] CVS: llvm-www/releases/1.0/register.cgi Message-ID: <200310271514.JAA27369@choi.cs.uiuc.edu> Changes in directory llvm-www/releases/1.0: register.cgi updated: 1.2 -> 1.3 --- Log message: Removed my personal email address from the list to notify. --- Diffs of the changes: (+1 -1) Index: llvm-www/releases/1.0/register.cgi diff -u llvm-www/releases/1.0/register.cgi:1.2 llvm-www/releases/1.0/register.cgi:1.3 --- llvm-www/releases/1.0/register.cgi:1.2 Fri Oct 24 17:06:36 2003 +++ llvm-www/releases/1.0/register.cgi Mon Oct 27 09:14:05 2003 @@ -7,7 +7,7 @@ import sys # List of email addresses that want to know when people download -notifylist=['criswell at uiuc.edu', 'jcriswel at bigw.org'] +notifylist=['criswell at uiuc.edu'] # # Function: Subscribe() From criswell at cs.uiuc.edu Mon Oct 27 10:18:01 2003 From: criswell at cs.uiuc.edu (John Criswell) Date: Mon Oct 27 10:18:01 2003 Subject: [llvm-commits] CVS: llvm-www/releases/1.0/register.cgi Message-ID: <200310271617.KAA27508@choi.cs.uiuc.edu> Changes in directory llvm-www/releases/1.0: register.cgi updated: 1.3 -> 1.4 --- Log message: Adding Vikram to the list of people to notify when LLVM is downloaded. --- Diffs of the changes: (+1 -1) Index: llvm-www/releases/1.0/register.cgi diff -u llvm-www/releases/1.0/register.cgi:1.3 llvm-www/releases/1.0/register.cgi:1.4 --- llvm-www/releases/1.0/register.cgi:1.3 Mon Oct 27 09:14:05 2003 +++ llvm-www/releases/1.0/register.cgi Mon Oct 27 10:17:25 2003 @@ -7,7 +7,7 @@ import sys # List of email addresses that want to know when people download -notifylist=['criswell at uiuc.edu'] +notifylist=['vadve at cs.uiuc.edu', 'criswell at uiuc.edu'] # # Function: Subscribe() From lattner at cs.uiuc.edu Mon Oct 27 10:19:01 2003 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon Oct 27 10:19:01 2003 Subject: [llvm-commits] CVS: llvm/test/Regression/Linker/2003-10-27-LinkOncePromote.ll Message-ID: <200310271618.KAA16012@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Linker: 2003-10-27-LinkOncePromote.ll added (r1.1) --- Log message: New testcase --- Diffs of the changes: (+8 -0) Index: llvm/test/Regression/Linker/2003-10-27-LinkOncePromote.ll diff -c /dev/null llvm/test/Regression/Linker/2003-10-27-LinkOncePromote.ll:1.1 *** /dev/null Mon Oct 27 10:18:38 2003 --- llvm/test/Regression/Linker/2003-10-27-LinkOncePromote.ll Mon Oct 27 10:18:28 2003 *************** *** 0 **** --- 1,8 ---- + ; The linker should merge link-once globals into strong external globals, + ; just like it does for weak symbols! + + ; RUN: echo "%X = global int 8" | llvm-as > %t.2.bc + ; RUN: llvm-as < %s > %t.1.bc + ; RUN: llvm-link %t.[12].bc + + %X = linkonce global int 7 From lattner at cs.uiuc.edu Mon Oct 27 10:32:02 2003 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon Oct 27 10:32:02 2003 Subject: [llvm-commits] CVS: llvm/test/Regression/Linker/2003-10-27-LinkOncePromote.ll Message-ID: <200310271630.KAA16552@zion.cs.uiuc.edu> Changes in directory llvm/test/Regression/Linker: 2003-10-27-LinkOncePromote.ll updated: 1.1 -> 1.2 --- Log message: Fix initializers to match --- Diffs of the changes: (+1 -1) Index: llvm/test/Regression/Linker/2003-10-27-LinkOncePromote.ll diff -u llvm/test/Regression/Linker/2003-10-27-LinkOncePromote.ll:1.1 llvm/test/Regression/Linker/2003-10-27-LinkOncePromote.ll:1.2 --- llvm/test/Regression/Linker/2003-10-27-LinkOncePromote.ll:1.1 Mon Oct 27 10:18:28 2003 +++ llvm/test/Regression/Linker/2003-10-27-LinkOncePromote.ll Mon Oct 27 10:30:29 2003 @@ -1,7 +1,7 @@ ; The linker should merge link-once globals into strong external globals, ; just like it does for weak symbols! -; RUN: echo "%X = global int 8" | llvm-as > %t.2.bc +; RUN: echo "%X = global int 7" | llvm-as > %t.2.bc ; RUN: llvm-as < %s > %t.1.bc ; RUN: llvm-link %t.[12].bc From lattner at cs.uiuc.edu Mon Oct 27 10:40:01 2003 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon Oct 27 10:40:01 2003 Subject: [llvm-commits] CVS: llvm/lib/Transforms/Utils/Linker.cpp Message-ID: <200310271639.KAA17917@zion.cs.uiuc.edu> Changes in directory llvm/lib/Transforms/Utils: Linker.cpp updated: 1.59 -> 1.60 --- Log message: Fix test: Linker/2003-10-27-LinkOncePromote.ll Fix PR58 --- Diffs of the changes: (+29 -27) Index: llvm/lib/Transforms/Utils/Linker.cpp diff -u llvm/lib/Transforms/Utils/Linker.cpp:1.59 llvm/lib/Transforms/Utils/Linker.cpp:1.60 --- llvm/lib/Transforms/Utils/Linker.cpp:1.59 Tue Oct 21 17:46:38 2003 +++ llvm/lib/Transforms/Utils/Linker.cpp Mon Oct 27 10:39:39 2003 @@ -437,20 +437,37 @@ } else if (DGV->isExternal()) { // If DGV is external but SGV is not... ValueMap.insert(std::make_pair(SGV, DGV)); DGV->setLinkage(SGV->getLinkage()); // Inherit linkage! - } else if (SGV->hasWeakLinkage()) { + } else if (SGV->hasWeakLinkage() || SGV->hasLinkOnceLinkage()) { // At this point we know that DGV has LinkOnce, Appending, Weak, or // External linkage. If DGV is Appending, this is an error. if (DGV->hasAppendingLinkage()) return Error(Err, "Linking globals named '" + SGV->getName() + " ' with 'weak' and 'appending' linkage is not allowed!"); + + if (SGV->isConstant() != DGV->isConstant()) + return Error(Err, "Global Variable Collision on '" + + SGV->getType()->getDescription() + " %" + SGV->getName() + + "' - Global variables differ in const'ness"); + // Otherwise, just perform the link. ValueMap.insert(std::make_pair(SGV, DGV)); - } else if (DGV->hasWeakLinkage()) { + + // Linkonce+Weak = Weak + if (DGV->hasLinkOnceLinkage() && SGV->hasWeakLinkage()) + DGV->setLinkage(SGV->getLinkage()); + + } else if (DGV->hasWeakLinkage() || DGV->hasLinkOnceLinkage()) { // At this point we know that SGV has LinkOnce, Appending, or External // linkage. If SGV is Appending, this is an error. if (SGV->hasAppendingLinkage()) return Error(Err, "Linking globals named '" + SGV->getName() + " ' with 'weak' and 'appending' linkage is not allowed!"); + + if (SGV->isConstant() != DGV->isConstant()) + return Error(Err, "Global Variable Collision on '" + + SGV->getType()->getDescription() + " %" + SGV->getName() + + "' - Global variables differ in const'ness"); + if (!SGV->hasLinkOnceLinkage()) DGV->setLinkage(SGV->getLinkage()); // Inherit linkage! ValueMap.insert(std::make_pair(SGV, DGV)); @@ -471,19 +488,6 @@ "' - External linkage globals have different initializers"); ValueMap.insert(std::make_pair(SGV, DGV)); - } else if (SGV->hasLinkOnceLinkage()) { - // If the global variable has a name, and that name is already in use in - // the Dest module, make sure that the name is a compatible global - // variable... - // - // Check to see if the two GV's have the same Const'ness... - if (SGV->isConstant() != DGV->isConstant()) - return Error(Err, "Global Variable Collision on '" + - SGV->getType()->getDescription() + " %" + SGV->getName() + - "' - Global variables differ in const'ness"); - - // Okay, everything is cool, remember the mapping... - ValueMap.insert(std::make_pair(SGV, DGV)); } else if (SGV->hasAppendingLinkage()) { // No linking is performed yet. Just insert a new copy of the global, and // keep track of the fact that it is an appending variable in the @@ -601,11 +605,15 @@ ValueMap.insert(std::make_pair(SF, DF)); DF->setLinkage(SF->getLinkage()); - } else if (SF->hasWeakLinkage()) { + } else if (SF->hasWeakLinkage() || SF->hasLinkOnceLinkage()) { // At this point we know that DF has LinkOnce, Weak, or External linkage. ValueMap.insert(std::make_pair(SF, DF)); - } else if (DF->hasWeakLinkage()) { + // Linkonce+Weak = Weak + if (DF->hasLinkOnceLinkage() && SF->hasWeakLinkage()) + DF->setLinkage(SF->getLinkage()); + + } else if (DF->hasWeakLinkage() || DF->hasLinkOnceLinkage()) { // At this point we know that SF has LinkOnce or External linkage. ValueMap.insert(std::make_pair(SF, DF)); if (!SF->hasLinkOnceLinkage()) // Don't inherit linkonce linkage @@ -619,9 +627,6 @@ return Error(Err, "Function '" + SF->getFunctionType()->getDescription() + "':\"" + SF->getName() + "\" - Function is already defined!"); - } else if (SF->hasLinkOnceLinkage()) { - // Completely ignore the source function. - ValueMap.insert(std::make_pair(SF, DF)); } else { assert(0 && "Unknown linkage configuration found!"); } @@ -702,14 +707,11 @@ Function *DF = cast(ValueMap[SF]); // Destination function // DF not external SF external? - if (!DF->isExternal()) { - if (DF->hasLinkOnceLinkage()) continue; // No relinkage for link-once! - if (SF->hasWeakLinkage()) continue; - return Error(Err, "Function '" + SF->getName() + - "' body multiply defined!"); + if (DF->isExternal()) { + // Only provide the function body if there isn't one already. + if (LinkFunctionBody(DF, SF, ValueMap, Err)) + return true; } - - if (LinkFunctionBody(DF, SF, ValueMap, Err)) return true; } } return false; From lattner at cs.uiuc.edu Mon Oct 27 11:07:04 2003 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon Oct 27 11:07:04 2003 Subject: [llvm-commits] CVS: llvm/docs/ReleaseNotes.html Message-ID: <200310271706.LAA23008@zion.cs.uiuc.edu> Changes in directory llvm/docs: ReleaseNotes.html updated: 1.14 -> 1.15 --- Log message: Update release notes for recent bug fixes --- Diffs of the changes: (+8 -3) Index: llvm/docs/ReleaseNotes.html diff -u llvm/docs/ReleaseNotes.html:1.14 llvm/docs/ReleaseNotes.html:1.15 --- llvm/docs/ReleaseNotes.html:1.14 Sun Oct 26 23:41:39 2003 +++ llvm/docs/ReleaseNotes.html Mon Oct 27 11:06:39 2003 @@ -70,12 +70,17 @@
  • temp
  • +In this release, the following Quality of Implementation issues were fixed:

    + +

      +
    1. C++ front-end is not generating linkonce linkage type when it can
    2. +

    + In this release, the following bugs in the previous release were fixed:

    1. [inliner] Inlining invoke with PHI in unwind target is broken
    2. -
    3. temp
    4. -
    5. temp
    6. +
    7. [linker] linkonce globals should link successfully to external globals

    At this time, LLVM is known to work properly with SPEC CPU 2000, the Olden @@ -364,6 +369,6 @@ Maintained By: The LLVM Team
    -Last modified: Sun Oct 26 23:41:10 CST 2003 +Last modified: Mon Oct 27 11:06:01 CST 2003 From lattner at cs.uiuc.edu Mon Oct 27 11:11:06 2003 From: lattner at cs.uiuc.edu (Chris Lattner) Date: Mon Oct 27 11:11:06 2003 Subject: [llvm-commits] CVS: llvm-www/releases/1.0/docs/ReleaseNotes.html Message-ID: <200310271710.LAA23125@zion.cs.uiuc.edu> Changes in directory llvm-www/releases/1.0/docs: ReleaseNotes.html updated: 1.3 -> 1.4 --- Log message: Add two bugs which have been fixed --- Diffs of the changes: (+9 -2) Index: llvm-www/releases/1.0/docs/ReleaseNotes.html diff -u llvm-www/releases/1.0/docs/ReleaseNotes.html:1.3 llvm-www/releases/1.0/docs/ReleaseNotes.html:1.4 --- llvm-www/releases/1.0/docs/ReleaseNotes.html:1.3 Sun Oct 26 07:30:55 2003 +++ llvm-www/releases/1.0/docs/ReleaseNotes.html Mon Oct 27 11:10:17 2003 @@ -155,7 +155,14 @@

  • It is not possible to dlopen an LLVM bytecode file in the JIT.

  • Linking in static archive files (.a files) is very slow (there is no symbol -table in the archive). +table in the archive).

    + + +

  • [inliner] Inlining invoke with PHI in unwind target is broken (fixed in 1.1)
  • + +

  • [linker] linkonce globals should link successfully to external globals (fixed in 1.1)
  • + +


    Known problems with the C front-end


    Known problems with the C++ front-end


    Known problems with the X86 back-end


    Known problems with the C front-end

    Bugs:Notes:Bugs:Notes:


    Known problems with the X86 back-end


    Known problems with the C front-end

    Bugs:Notes:Bugs:Notes:


    Known problems with the C front-end