Skip to content
  1. Jan 30, 2014
  2. Jan 29, 2014
  3. Jan 28, 2014
  4. Jan 27, 2014
  5. Jan 24, 2014
  6. Jan 23, 2014
  7. Jan 22, 2014
    • Greg Fitzgerald's avatar
      Fix inline assembly that switches between ARM and Thumb modes · 1f6a6086
      Greg Fitzgerald authored
      This patch restores the ARM mode if the user's inline assembly
      does not.  In the object streamer, it ensures that instructions
      following the inline assembly are encoded correctly and that
      correct mapping symbols are emitted.  For the asm streamer, it
      emits a .arm or .thumb directive.
      
      This patch does not ensure that the inline assembly contains
      the ADR instruction to switch modes at runtime.
      
      The problem we need to solve is code like this:
      
        int foo(int a, int b) {
          int r = a + b;
          asm volatile(
              ".align 2     \n"
              ".arm         \n"
              "add r0,r0,r0 \n"
          : : "r"(r));
          return r+1;
        }
      
      If we compile this function in thumb mode then the inline assembly
      will switch to arm mode. We need to make sure that we switch back to
      thumb mode after emitting the inline assembly or we will incorrectly
      encode the instructions that follow (i.e. the assembly instructions
      for return r+1).
      
      Based on patch by David Peixotto
      
      Change-Id: Ib57f6d2d78a22afad5de8693fba6230ff56ba48b
      llvm-svn: 199818
      1f6a6086
  8. Jan 20, 2014
    • Chandler Carruth's avatar
      Fix a DenseMap iterator invalidation bug causing lots of crashes when · b587ab67
      Chandler Carruth authored
      type units were enabled. The crux of the issue is that the
      addDwarfTypeUnitType routine can end up being indirectly recursive. In
      this case, the reference into the dense map (TU) became invalid by the
      time we popped all the way back and used it to add the DIE type
      signature.
      
      Instead, use early return in the case where we can bypass the recursive
      step and creating a type unit. Then use the pointer to the new type unit
      to set up the DIE type signature in the case where we have to.
      
      I tried really hard to reduce a testcase for this, but it's really
      annoying. You have to get this to be mid-recursion when the densemap
      grows. Even if we got a test case for this today, it'd be very unlikely
      to continue exercising this pattern.
      
      llvm-svn: 199630
      b587ab67
  9. Jan 18, 2014
  10. Jan 16, 2014
  11. Jan 15, 2014
  12. Jan 14, 2014
    • Eric Christopher's avatar
      Enable use of ranges for translation units in the presence of · 39cde8cc
      Eric Christopher authored
      -ffunction-sections and update comments and TODOs about other
      places that we should enable this.
      
      llvm-svn: 199263
      39cde8cc
    • Nico Rieck's avatar
      Decouple dllexport/dllimport from linkage · 7157bb76
      Nico Rieck authored
      Representing dllexport/dllimport as distinct linkage types prevents using
      these attributes on templates and inline functions.
      
      Instead of introducing further mixed linkage types to include linkonce and
      weak ODR, the old import/export linkage types are replaced with a new
      separate visibility-like specifier:
      
        define available_externally dllimport void @f() {}
        @Var = dllexport global i32 1, align 4
      
      Linkage for dllexported globals and functions is now equal to their linkage
      without dllexport. Imported globals and functions must be either
      declarations with external linkage, or definitions with
      AvailableExternallyLinkage.
      
      llvm-svn: 199218
      7157bb76
    • Nico Rieck's avatar
      Revert "Decouple dllexport/dllimport from linkage" · 9d2e0df0
      Nico Rieck authored
      Revert this for now until I fix an issue in Clang with it.
      
      This reverts commit r199204.
      
      llvm-svn: 199207
      9d2e0df0
    • Nico Rieck's avatar
      Decouple dllexport/dllimport from linkage · e43aaf79
      Nico Rieck authored
      Representing dllexport/dllimport as distinct linkage types prevents using
      these attributes on templates and inline functions.
      
      Instead of introducing further mixed linkage types to include linkonce and
      weak ODR, the old import/export linkage types are replaced with a new
      separate visibility-like specifier:
      
        define available_externally dllimport void @f() {}
        @Var = dllexport global i32 1, align 4
      
      Linkage for dllexported globals and functions is now equal to their linkage
      without dllexport. Imported globals and functions must be either
      declarations with external linkage, or definitions with
      AvailableExternallyLinkage.
      
      llvm-svn: 199204
      e43aaf79
    • Rafael Espindola's avatar
      Make getTargetStreamer return a possibly null pointer. · 4a1a3606
      Rafael Espindola authored
      This will allow it to be called from target independent parts of the main
      streamer that don't know if there is a registered target streamer or not. This
      in turn will allow targets to perform extra actions at specified points in the
      interface: add extra flags for some labels, extra work during finalization, etc.
      
      llvm-svn: 199174
      4a1a3606
  13. Jan 12, 2014
  14. Jan 11, 2014
  15. Jan 10, 2014
  16. Jan 09, 2014
Loading