Skip to content
  1. Mar 24, 2011
  2. Mar 23, 2011
    • David Chisnall's avatar
      Fixed type error in last commit (forgot that now that selectors are not · 76803410
      David Chisnall authored
      accessed via the indirect pointer, they don't need to be pointers to pointers).
      
      Finished moving the message lookup code into separate subclasses for each
      runtime.  Also performed a few smallish related tidies.
      
      We're now bitcasting the result of the message lookup functions, rather than
      casting the lookup functions themselves, so the messages.m test needed updating
      to reflect this.
      
      llvm-svn: 128180
      76803410
    • Evan Cheng's avatar
      Cmp peephole optimization isn't always safe for signed arithmetics. · 425489d3
      Evan Cheng authored
      int tries = INT_MAX;    
      while (tries > 0) {
            tries--;
      }
      
      The check should be:
              subs    r4, #1
              cmp     r4, #0
              bgt     LBB0_1
      
      The subs can set the overflow V bit when r4 is INT_MAX+1 (which loop
      canonicalization apparently does in this case). cmp #0 would have cleared
      it while not changing the N and Z bits. Since BGT is dependent on the V
      bit, i.e. (N == V) && !Z, it is not safe to eliminate the cmp #0.
      
      rdar://9172742
      
      llvm-svn: 128179
      425489d3
    • Caroline Tice's avatar
      Add missing cases to switch statements & remove 'default'. · ca1176aa
      Caroline Tice authored
      llvm-svn: 128177
      ca1176aa
    • Eli Friedman's avatar
      PR9535: add support for splitting and scalarizing vector ISD::FP_ROUND. · 4c192305
      Eli Friedman authored
      Also cleaning up some duplicated code while I'm here.
      
      llvm-svn: 128176
      4c192305
    • Andrew Trick's avatar
      Reapply Eli's r127852 now that the pre-RA scheduler can spill EFLAGS. · 4046a0de
      Andrew Trick authored
      (target-specific branchless method for double-width relational comparisons on x86)
      
      llvm-svn: 128175
      4046a0de
    • Jim Grosbach's avatar
      Split out relocation resolution into target-specific bits. · c80099aa
      Jim Grosbach authored
      llvm-svn: 128173
      c80099aa
    • Owen Anderson's avatar
      The high bit of a Thumb2 ADR's offset is stored in bit 26, not bit 25. · 8543d4f8
      Owen Anderson authored
      This fixes 464.h264ref with the integrated assembler.
      
      llvm-svn: 128172
      8543d4f8
    • Jim Grosbach's avatar
      Fix double-free of Module. · 98775c43
      Jim Grosbach authored
      The ExecutionEngine constructor already added the module, so there's no
      need to call addModule() directly. Doing so causes a double-free of the
      Module at program termination.
      
      llvm-svn: 128171
      98775c43
    • Ted Kremenek's avatar
      Fix CFG-construction bug when run from AnalysisBasedWarnings::IssueWarnings()... · dcc4c389
      Ted Kremenek authored
      Fix CFG-construction bug when run from AnalysisBasedWarnings::IssueWarnings() where block-level expressions that need
      to be recorded in the Stmt*->CFGBlock* map were not always done so.  Fixes <rdar://problem/9171946>.
      
      llvm-svn: 128170
      dcc4c389
    • Owen Anderson's avatar
      Fix a bug introduced by my patch yesterday: BL is a 4-byte instructions like... · ab234158
      Owen Anderson authored
      Fix a bug introduced by my patch yesterday: BL is a 4-byte instructions like BLX, rather than a 2-byte instruction like B.
      
      llvm-svn: 128169
      ab234158
    • Douglas Gregor's avatar
      Unbreak test · 336a15e0
      Douglas Gregor authored
      llvm-svn: 128168
      336a15e0
    • Johnny Chen's avatar
      Silence clang warnings. · 74af4bc1
      Johnny Chen authored
      llvm-svn: 128167
      74af4bc1
    • Andrew Trick's avatar
      Ensure that def-side physreg copies are scheduled above any other uses · 13acae04
      Andrew Trick authored
      so the scheduler can't create new interferences on the copies
      themselves. Prior to this fix the scheduler could get stuck in a loop
      creating copies.
      Fixes PR9509.
      
      llvm-svn: 128164
      13acae04
    • Andrew Trick's avatar
      whitespace · a8846e05
      Andrew Trick authored
      llvm-svn: 128163
      a8846e05
    • Johnny Chen's avatar
      Turns out that the test failure wrt: · ac77f3b2
      Johnny Chen authored
          rdar://problem/9173060 lldb hangs while running unique-types
      
      disappears if running with clang version >= 3.  Modify the TestUniqueTypes.py
      to detect if we are running with clang version < 3 and, if true, skip the test.
      
      Update the lldbtest.system() function to return a tuple of (stdoutdata, stderrdata)
      since we need the stderr data from "clang -v" command.  Modify existing clients of
      lldbtest.system() to now use, for example:
      
               # First, capture the golden output emitted by the oracle, i.e., the
               # series of printf statements.
      -        go = system("./a.out", sender=self)
      +        go = system("./a.out", sender=self)[0]
               # This golden list contains a list of (variable, value) pairs extracted
               # from the golden output.
               gl = []
      
      And add two utility functions to lldbutil.py.
      
      llvm-svn: 128162
      ac77f3b2
    • Jim Grosbach's avatar
      Start of relocation resolution for the runtime dyld library. · 6a85a051
      Jim Grosbach authored
      llvm-svn: 128161
      6a85a051
    • Jim Grosbach's avatar
      Make sure to report any errors from the runtime dyld. · c114d89e
      Jim Grosbach authored
      llvm-svn: 128160
      c114d89e
    • Fariborz Jahanian's avatar
      Support for Transparent unions used as overloadable · 16f92ce5
      Fariborz Jahanian authored
      function parameter. // rdar:// 9129552
      and PR9406.
      
      llvm-svn: 128159
      16f92ce5
    • Marshall Clow's avatar
      Add a test for !ptr-to-member (should fail) · e7deac8c
      Marshall Clow authored
      llvm-svn: 128158
      e7deac8c
    • Andrew Trick's avatar
      4a3ee934
    • David Chisnall's avatar
      Remove the redundant loads / stores to globals that we were generating for... · f1a38cf3
      David Chisnall authored
      Remove the redundant loads / stores to globals that we were generating for selectors (GNU runtimes).
      
      llvm-svn: 128156
      f1a38cf3
    • Jakob Stoklund Olesen's avatar
      Don't coalesce identical DBG_VALUE instructions prematurely. · a87d80cd
      Jakob Stoklund Olesen authored
      Each of these instructions may have a RegsClobberInsn entry that can't be
      ignored. Consecutive ranges are coalesced later when DwarfDebug::emitDebugLoc
      merges entries.
      
      llvm-svn: 128155
      a87d80cd
    • Oscar Fuentes's avatar
      Supports building with a list of targets that does not contain · 465f9364
      Oscar Fuentes authored
      X86. Fixes PR9533.
      
      llvm-svn: 128154
      465f9364
    • Justin Holewinski's avatar
      PTX: Improve support for 64-bit addressing · 06c8a382
      Justin Holewinski authored
      - Fix bug in ADDRrr/ADDRri/ADDRii selection for 64-bit addresses
      - Add comparison selection for i64
      - Add zext selection for i32 -> i64
      - Add shl/shr/sha support for i64
      
      llvm-svn: 128153
      06c8a382
    • David Chisnall's avatar
      Initial work on refactoring GNU runtime code (long overdue - it's quite obvious · d7972f5b
      David Chisnall authored
      that I hadn't used C++ for several years before writing most of this code).
      Still lots more to do.  This set of changes includes:
      
      - Remove the distinction between typed and untyped selectors.  More accurately
        reflect what the runtime does, by using typed selectors everywhere, with an
        empty type field if the types are unknown.  Now we just store a small list of
        types for each selector (in theory, this should always be exactly one, but
        this constraint was not enforced back in 1986 when it should have been).
      
      - Add some consistency to how runtime functions are created.  These are all
        generated via the LazyRuntimeFunction class (which might be useful outside
        CGObjCGNU - feel free to move it into a header if it is).  This function
        stores the types of a function, looks it up the first time it's used, and
        caches the result.  This means that we're now not wasting time constructing
        the llvm::FunctionType every time some of the functions are looked up, but
        also not inserting references to runtime functions into the module if they're
        not actually used.
      
      - Started separating out the fragile and non-fragile ABI behaviours into two
        subclasses of CGObjCGNU: CGObjCGCC for the legacy GCC runtime ABI and
        CGObjCGNUstep for the new GNUstep ABI.  Not all of the differences in
        behaviour are factored out yet, but they will be in future commits.
      
      - Removed all of the CodeGen:: things: we've been using namespace CodeGen in
        this file for ages, so having explicit namespace specifiers is just a bit
        confusing.
      
      - Added a few more comments.
      
      - Used llvm::StringRef instead of std::string in a few places.
      
      - Finally got around to storing the module path in the module structure.  The
        ABI says that the compiler should do this, although it's not used in the
        runtime or exposed outside the runtime, so it's pretty useless.  
      
      Still to do:
      
      - We currently have two code paths for generating try blocks, one for ObjC and
        one for ObjC++.  Not only are these substantially similar, they are also very
        similar to the CGObjCMac version.  These need factoring out into a single
        parameterised implementation, either in CGObjCRuntime or CodeGenFunction.
        The EmitObjCXXTryStmt() function was added so that the changes to fix a bug
        in time for the 2.9 release would be self-contained and reduce the chances of
        breaking anything else, but these should be done properly as soon as
        possible.
      
      - Split up some large functions (e.g. GenerateClass()) into smaller functions
        for generating the various data structures.
      
      - The method lookup code into the two subclasses, removing the conditionals in
        the message send functions.
      
      - Add doxygen comments on the remaining undocumented functions.
      
      - We seem to be generating global pointer variables for selectors, then storing
        a pointer to the selector, then generating a load of this pointer (and then a
        load of the real selector later) every time a static selector is used.  I can
        only assume I was asleep or drunk when I did this - we should just be
        referencing the selectors directly in the selector array.
      
      llvm-svn: 128152
      d7972f5b
Loading