[LLVMbugs] [Bug 14722] New: mid-optimizer warning

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Dec 26 13:32:31 PST 2012


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

             Bug #: 14722
           Summary: mid-optimizer warning
           Product: clang
           Version: unspecified
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: -New Bugs
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: nlewycky at google.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


Please reimplement this mid-optimizer warning (currently in instcombine) in
clang instead. Since static analysis can't find all these cases, please also
implement it under -fsanitize=undefined. Testcase:

--

typedef void* FTC_Node;
typedef void* FTC_GQuery;
typedef void* FTC_GNode;
typedef void* FTC_Cache;
typedef void* FT_Pointer;

static unsigned char
FTC_GNode_Compare(FTC_GNode gnode, FTC_GQuery gquery)
{
  return 0;
}

typedef unsigned char
(*FTC_Node_CompareFunc)( FTC_Node node,
                         FT_Pointer key,
                         FTC_Cache cache );

void test() {
  FTC_Node *_node = 0;
  FTC_Cache _cache = 0;
  FTC_GQuery query = 0;
  FTC_Node_CompareFunc _nodcomp = (FTC_Node_CompareFunc)(FTC_GNode_Compare);
  _nodcomp( _node, &query, _cache );
}

--

I preserved the names from freetype2 in case anybody wants to go talk to them
about how they're calling a function with an entirely wrong signature.

Previously this caused the following behaviour:

nlewycky at ducttape:~$ llvm/Debug+Asserts/bin/clang -O2 -Wall -Werror warn.c -c
WARNING: While resolving call to function 'FTC_GNode_Compare' arguments were
dropped!
nlewycky at ducttape:~$ llvm/Debug+Asserts/bin/clang -Wall -Werror warn.c -c

As of r171041 it does this:
nlewycky at ducttape:~$ llvm/Debug+Asserts/bin/clang -O2 -Wall -Werror warn.c -c
error: while resolving call to function 'FTC_GNode_Compare' arguments were
      dropped
1 error generated.
nlewycky at ducttape:~$ llvm/Debug+Asserts/bin/clang -Wall -Werror warn.c -c

which is now build-breaking. I'd also like some advice from the language folks,
whether we may optimize to 'unreachable' here. I suspect there's some reason we
don't already (K&R?).

-- 
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.



More information about the llvm-bugs mailing list