[LLVMbugs] [Bug 7724] New: clang++ asserts during compilation of if statement with compound conditional in C++ code

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue Jul 27 10:27:04 PDT 2010


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

           Summary: clang++ asserts during compilation of if statement
                    with compound conditional in C++ code
           Product: clang
           Version: trunk
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: release blocker
          Priority: P
         Component: C++
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: mike.jackson at bluequartz.net
                CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com


// Begin Code
#include <iostream>

//
-----------------------------------------------------------------------------
int GetSwapBytes() { return 1; }

//
-----------------------------------------------------------------------------
template<typename OT>
int myMethod()
{
if (GetSwapBytes() && sizeof(OT) > 1) // <=== HERE IS THE PROBLEM
  {
    std::cout << "sizeof(OT) == 4" << std::endl;
  }
  return 1;
}

//
-----------------------------------------------------------------------------
int main (int argc, char const *argv[])
{
  int ret = myMethod<int>();  
  return 0;
}
// END CODE

The above code will cause clang++ to assert during compiling. The assertion is:

595:[mjackson at ferb:clang]$ clang++ ~/Desktop/test.cpp -o ~/Desktop/clang-test
Assertion failed: (!isDependentType() && "This doesn't make sense for dependent
types"), function isConstantSizeType, file
/Users/Shared/OpenSource/llvm/tools/clang/lib/AST/Type.cpp, line 616.
Stack dump:
0.    Program arguments: /Users/Shared/OpenSource/llvm/Build/bin/clang -cc1
-triple i386-apple-darwin9.0.0 -emit-obj -mrelax-all -disable-free
-main-file-name test.cpp -pic-level 1 -mdisable-fp-elim -masm-verbose
-target-cpu yonah -resource-dir
/Users/Shared/OpenSource/llvm/Build/lib/clang/2.8 -ferror-limit 19
-fmessage-length 148 -fblocks -fexceptions -fdiagnostics-show-option
-fcolor-diagnostics -o
/var/folders/Zm/ZmwaqVZrGbee7mHKbefzNU+++TI/-Tmp-/cc-v8OIWq.o -x c++
/Users/mjackson/Desktop/test.cpp 
1.    /Users/mjackson/Desktop/test.cpp:51:37: current parser token ')'
2.    /Users/mjackson/Desktop/test.cpp:50:1: parsing function body 'myMethod'
3.    /Users/mjackson/Desktop/test.cpp:50:1: in compound statement ('{}')
clang: error: clang frontend command failed due to signal 6 (use -v to see
invocation)


GCC and Visual Studio 2008 both compile this code cleanly.

LLVM and Clang both checked out from svn on July 27,2010 at about 10:00 AM EST.
Built using GCC 4.2 on OS X 10.5.8 using standard Xcode 3.1.4 tools.

clang++ --version
clang version 2.8 (trunk 109508)
Target: i386-apple-darwin9
Thread model: posix

Thanks
Mike Jackson

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