http://llvm.org/bugs/show_bug.cgi?id=5601

           Summary: llvm-as: ParseFunctionHeader in LLParser.cpp poorly
                    handles incorrect forward declarations
           Product: new-bugs
           Version: 2.6
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: normal
          Priority: P2
         Component: new bugs
        AssignedTo: [email protected]
        ReportedBy: [email protected]
                CC: [email protected]


Created an attachment (id=3860)
 --> (http://llvm.org/bugs/attachment.cgi?id=3860)
A minimal testcase to cause the failure

A forward function declaration, if it has a greater number of arguments than is
used in the file, will cause an assertion error instead of a type mismatch
error.

In LLParser.cpp, line 2538:
  // Add all of the arguments we parsed to the function.
  Function::arg_iterator ArgIt = Fn->arg_begin();
  for (unsigned i = 0, e = ArgList.size(); i != e; ++i, ++ArgIt) {
    // If the argument has a name, insert it into the argument symbol table.
    if (ArgList[i].Name.empty()) continue;

    // Set the name, if it conflicted, it will be auto-renamed.
    ArgIt->setName(ArgList[i].Name);

    if (ArgIt->getNameStr() != ArgList[i].Name)
      return Error(ArgList[i].Loc, "redefinition of argument '%" +
                   ArgList[i].Name + "'");
  }

I don't believe ArgIt should always be incremented.  If ArgIt reaches the end
before i == e, a type error should be raised.


-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to