Skip to content
  1. Sep 24, 2011
    • Eli Friedman's avatar
      PR10998: It is not legal to sink an instruction past the terminator of a... · 8a15a5aa
      Eli Friedman authored
      PR10998: It is not legal to sink an instruction past the terminator of a block; make sure we don't do that.
      
      llvm-svn: 140428
      8a15a5aa
    • Matt Beaumont-Gay's avatar
      Fix a crash-on-invalid. · d0457924
      Matt Beaumont-Gay authored
      The token stream was not getting properly reset when leaving
      ParseLexedMethodDef in some error cases. In the testcase, that caused later
      accesses to the token stream to touch memory which had been freed as we
      finished parsing the class definition. Major hat-tip to AddressSanitizer for
      helping pinpoint the use-after-free, including the allocation and deallocation
      points:
      
      ==21510== ERROR: AddressSanitizer heap-use-after-free on address 0x7feb3de87848 at pc 0x249f4e2 bp 0x7fff15a89df0 sp 0x7fff15a89ce0
      READ of size 1 at 0x7feb3de87848 thread T0
        #0 0x249f4e2 clang::TokenLexer::Lex()
        #1 0x1c834a0 clang::Parser::ConsumeToken()
        #2 0x1c7dc0f clang::Parser::ParseDeclarationOrFunctionDefinition()
        #3 0x1c7e16b clang::Parser::ParseDeclarationOrFunctionDefinition()
      <snip>
      0x7feb3de87848 is located 1992 bytes inside of 3816-byte region [0x7feb3de87080,0x7feb3de87f68)
      freed by thread T0 here:
        #0 0x3a22c19 free
        #1 0x1d136a1 clang::Parser::LexedMethod::~LexedMethod()
        #2 0x1cef528 clang::Parser::DeallocateParsedClasses()
        #3 0x1cef676 clang::Parser::PopParsingClass()
        #4 0x1cea094 clang::Parser::ParseCXXMemberSpecification()
        #5 0x1ce7ae5 clang::Parser::ParseClassSpecifier()
        #6 0x1cfe588 clang::Parser::ParseDeclarationSpecifiers()
        #7 0x1c7dbe8 clang::Parser::ParseDeclarationOrFunctionDefinition()
        #8 0x1c7e16b clang::Parser::ParseDeclarationOrFunctionDefinition()
      <snip>
      previously allocated by thread T0 here:
        #0 0x3a2302d realloc
        #1 0x39d7c97 llvm::SmallVectorBase::grow_pod()
        #2 0x1ac588e llvm::SmallVectorImpl<>::push_back()
        #3 0x1d12d8b clang::Parser::ConsumeAndStoreUntil()
        #4 0x1c9c24d clang::Parser::ConsumeAndStoreUntil()
        #5 0x1d12c1e clang::Parser::ConsumeAndStoreUntil()
        #6 0x1c9c24d clang::Parser::ConsumeAndStoreUntil()
        #7 0x1d10042 clang::Parser::ParseCXXInlineMethodDef()
        #8 0x1cec51a clang::Parser::ParseCXXClassMemberDeclaration()
        #9 0x1ce9de5 clang::Parser::ParseCXXMemberSpecification()
        #10 0x1ce7ae5 clang::Parser::ParseClassSpecifier()
        #11 0x1cfe588 clang::Parser::ParseDeclarationSpecifiers()
        #12 0x1c7dbe8 clang::Parser::ParseDeclarationOrFunctionDefinition()
        #13 0x1c7e16b clang::Parser::ParseDeclarationOrFunctionDefinition()
      <snip>
      
      llvm-svn: 140427
      d0457924
    • Owen Anderson's avatar
    • Jakob Stoklund Olesen's avatar
      Also match negative offsets for addrmode3 and addrmode5. · 2056d15b
      Jakob Stoklund Olesen authored
      Math is hard, and isScaledConstantInRange() always returned false for
      negative constants.  It was doing unsigned division of negative numbers
      before casting back to signed.
      
      llvm-svn: 140425
      2056d15b
    • Douglas Gregor's avatar
      Fix up assertion a bit more · 27f58c2e
      Douglas Gregor authored
      llvm-svn: 140424
      27f58c2e
    • Owen Anderson's avatar
      Fix incorrect disassembly test. · b7577220
      Owen Anderson authored
      llvm-svn: 140423
      b7577220
  2. Sep 23, 2011
Loading