Skip to content
  1. Jan 14, 2014
    • Duncan P. N. Exon Smith's avatar
      Reapply "LTO: add API to set strategy for -internalize" · 93be7c4f
      Duncan P. N. Exon Smith authored
      Reapply r199191, reverted in r199197 because it carelessly broke
      Other/link-opts.ll.  The problem was that calling
      createInternalizePass("main") would select
      createInternalizePass(bool("main")) instead of
      createInternalizePass(ArrayRef<const char *>("main")).  This commit
      fixes the bug.
      
      The original commit message follows.
      
      Add API to LTOCodeGenerator to specify a strategy for the -internalize
      pass.
      
      This is a new attempt at Bill's change in r185882, which he reverted in
      r188029 due to problems with the gold linker.  This puts the onus on the
      linker to decide whether (and what) to internalize.
      
      In particular, running internalize before outputting an object file may
      change a 'weak' symbol into an internal one, even though that symbol
      could be needed by an external object file --- e.g., with arclite.
      
      This patch enables three strategies:
      
      - LTO_INTERNALIZE_FULL: the default (and the old behaviour).
      - LTO_INTERNALIZE_NONE: skip -internalize.
      - LTO_INTERNALIZE_HIDDEN: only -internalize symbols with hidden
        visibility.
      
      LTO_INTERNALIZE_FULL should be used when linking an executable.
      
      Outputting an object file (e.g., via ld -r) is more complicated, and
      depends on whether hidden symbols should be internalized.  E.g., for
      ld -r, LTO_INTERNALIZE_NONE can be used when -keep_private_externs, and
      LTO_INTERNALIZE_HIDDEN can be used otherwise.  However,
      LTO_INTERNALIZE_FULL is inappropriate, since the output object file will
      eventually need to link with others.
      
      lto_codegen_set_internalize_strategy() sets the strategy for subsequent
      calls to lto_codegen_write_merged_modules() and lto_codegen_compile*().
      
      <rdar://problem/14334895>
      
      llvm-svn: 199244
      93be7c4f
    • Ana Pazos's avatar
      [AArch64] Added vselect patterns with float and double types · 787f540d
      Ana Pazos authored
      llvm-svn: 199242
      787f540d
    • Rafael Espindola's avatar
      Handle UIDs and GIDs that don't fit in 6 decimal places. · ed90030f
      Rafael Espindola authored
      Newer unix systems have 32 bit uid and gid types, but the archive format was
      not updated. Fortunately, these fields are not normally used. Just truncate
      the data to fit in 6 chars.
      
      llvm-svn: 199223
      ed90030f
    • Zoran Jovanovic's avatar
      Test case micromips-load-effective-address.s renamed to... · 9d176af7
      Zoran Jovanovic authored
      Test case micromips-load-effective-address.s renamed to micromips-load-effective-address.ll and moved to test/CodeGen/Mips.
      
      llvm-svn: 199221
      9d176af7
    • Nico Rieck's avatar
      Handle dllexport for global aliases · c60647f0
      Nico Rieck authored
      llvm-svn: 199219
      c60647f0
    • 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
    • Elena Demikhovsky's avatar
      AVX-512: optimized scalar compare patterns · 767fc967
      Elena Demikhovsky authored
      removed AVX512SI format, since it is similar to AVX512BI.
      
      llvm-svn: 199217
      767fc967
    • Patrik Hagglund's avatar
      Fix valgrind warning for gcc builds. · 682a10d4
      Patrik Hagglund authored
      Sorry, I don't understand why the warning is generated (a gcc
      bug?). Anyhow, the change should improve readablity. No functionality
      change intended.
      
      llvm-svn: 199214
      682a10d4
    • Andrea Di Biagio's avatar
      [X86] Fix assertion failure caused by a wrong folding of vector shifts by immediate count. · 5448a3c7
      Andrea Di Biagio authored
      This fixes a regression intruced by r198113.
      
      Revision r198113 introduced an algorithm that tries to fold a vector shift
      by immediate count into a build_vector if the input vector is a known vector
      of constants.
      
      However the algorithm only worked under the assumption that the input vector
      type and the shift type are exactly the same.
      
      This patch disables the folding of vector shift by immediate count if the
      input vector type and the shift value type are not the same.
      
      llvm-svn: 199213
      5448a3c7
    • Tim Northover's avatar
      ARM: add constraint that RdLo != Rn != RdHi for v5 MLA insts. · 56cc5c92
      Tim Northover authored
      llvm-svn: 199212
      56cc5c92
    • Tim Northover's avatar
      ARM: remove unused UMAALv5 node · c4c34b4f
      Tim Northover authored
      It was incorrect anyway, since it didn't have accumulator inputs and wasn't
      even supported on v5.
      
      llvm-svn: 199211
      c4c34b4f
    • 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
      Revert "Handle dllexport for global aliases" · 1794b62f
      Nico Rieck authored
      This reverts commit r199205.
      
      llvm-svn: 199206
      1794b62f
    • Nico Rieck's avatar
      Handle dllexport for global aliases · 4192acdb
      Nico Rieck authored
      llvm-svn: 199205
      4192acdb
    • 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
    • Nico Rieck's avatar
      Fix fastcall mangling of dllimported symbols · da881a27
      Nico Rieck authored
      fastcall requires @ as global prefix instead of _ but getNameWithPrefix
      wrongly assumes the OutName buffer is empty and replaces at index 0.
      For imported functions this buffer is pre-filled with "__imp_" resulting
      in broken "@_imp_foo@0" mangling.
      
      Instead replace at the proper index. We also never have to prepend the
      @-prefix because this fastcall mangling is only used on 32-bit Windows
      targets which have _ has global prefix.
      
      llvm-svn: 199203
      da881a27
    • NAKAMURA Takumi's avatar
      Revert r199191, "LTO: add API to set strategy for -internalize" · 23c0ab53
      NAKAMURA Takumi authored
      Please update also Other/link-opts.ll, in next time.
      
      llvm-svn: 199197
      23c0ab53
    • Craig Topper's avatar
      Remove stray comma in enum to satisfy -Wpedantic. · ad60708a
      Craig Topper authored
      llvm-svn: 199194
      ad60708a
    • Craig Topper's avatar
      Separate the concept of 16-bit/32-bit operand size controlled by 0x66 prefix... · ae11aed9
      Craig Topper authored
      Separate the concept of 16-bit/32-bit operand size controlled by 0x66 prefix and the current mode from the concept of SSE instructions using 0x66 prefix as part of their encoding without being affected by the mode.
      
      This should allow SSE instructions to be encoded correctly in 16-bit mode which r198586 probably broke.
      
      llvm-svn: 199193
      ae11aed9
    • Duncan P. N. Exon Smith's avatar
      LTO: add API to set strategy for -internalize · 43ea3478
      Duncan P. N. Exon Smith authored
      Add API to LTOCodeGenerator to specify a strategy for the -internalize
      pass.
      
      This is a new attempt at Bill's change in r185882, which he reverted in
      r188029 due to problems with the gold linker.  This puts the onus on the
      linker to decide whether (and what) to internalize.
      
      In particular, running internalize before outputting an object file may
      change a 'weak' symbol into an internal one, even though that symbol
      could be needed by an external object file --- e.g., with arclite.
      
      This patch enables three strategies:
      
      - LTO_INTERNALIZE_FULL: the default (and the old behaviour).
      - LTO_INTERNALIZE_NONE: skip -internalize.
      - LTO_INTERNALIZE_HIDDEN: only -internalize symbols with hidden
        visibility.
      
      LTO_INTERNALIZE_FULL should be used when linking an executable.
      
      Outputting an object file (e.g., via ld -r) is more complicated, and
      depends on whether hidden symbols should be internalized.  E.g., for
      ld -r, LTO_INTERNALIZE_NONE can be used when -keep_private_externs, and
      LTO_INTERNALIZE_HIDDEN can be used otherwise.  However,
      LTO_INTERNALIZE_FULL is inappropriate, since the output object file will
      eventually need to link with others.
      
      lto_codegen_set_internalize_strategy() sets the strategy for subsequent
      calls to lto_codegen_write_merged_modules() and lto_codegen_compile*().
      
      <rdar://problem/14334895>
      
      llvm-svn: 199191
      43ea3478
    • Jakob Stoklund Olesen's avatar
      Always let value types influence register classes. · b6b35a49
      Jakob Stoklund Olesen authored
      When creating a virtual register for a def, the value type should be
      used to pick the register class. If we only use the register class
      constraint on the instruction, we might pick a too large register class.
      
      Some registers can store values of different sizes. For example, the x86
      xmm registers can hold f32, f64, and 128-bit vectors. The three
      different value sizes are represented by register classes with identical
      register sets: FR32, FR64, and VR128. These register classes have
      different spill slot sizes, so it is important to use the right one.
      
      The register class constraint on an instruction doesn't necessarily care
      about the size of the value its defining. The value type determines
      that.
      
      This fixes a problem where InstrEmitter was picking 32-bit register
      classes for 64-bit values on SPARC.
      
      llvm-svn: 199187
      b6b35a49
    • Jakob Stoklund Olesen's avatar
      Switch the NEON register class from QPR to DPair. · 20912062
      Jakob Stoklund Olesen authored
      The already allocatable DPair superclass contains odd-even D register
      pair in addition to the even-odd pairs in the QPR register class. There
      is no reason to constrain the set of D register pairs that can be used
      for NEON values. Any NEON instructions that require a Q register will
      automatically constrain the register class to QPR.
      
      The allocation order for DPair begins with the QPR registers, so
      register allocation is unlikely to change much.
      
      llvm-svn: 199186
      20912062
    • Chandler Carruth's avatar
      e2d5663b
    • Chandler Carruth's avatar
      Remove the last weird subproject, 'privbracket'. · 9384786b
      Chandler Carruth authored
      llvm-svn: 199183
      9384786b
    • Chandler Carruth's avatar
      Add checks to configure for sufficiently modern host compilers. This · 75a6545d
      Chandler Carruth authored
      requires Clang 3.1 or GCC 4.7. If the compiler isn't Clang or GCC, we
      don't try to do any sanity checking, but this give us at least
      a reasonable baseline of modern compilers.
      
      Also, I'm not claiming that this is the best way to do compiler version
      tests. I'm happy for anyone to suggest better ways of doing this test.
      
      llvm-svn: 199182
      75a6545d
    • Rafael Espindola's avatar
      Replace .mips_hack_stocg with ".set micromips" and ".set nomicromips". · 6d5f7ce3
      Rafael Espindola authored
      This matches what gnu as does and implementing this is easier than arguing
      about it.
      
      llvm-svn: 199181
      6d5f7ce3
    • Mark Seaborn's avatar
      Fix llc to not reuse spill slots in functions that invoke setjmp() · 8271118a
      Mark Seaborn authored
      We need to ensure that StackSlotColoring.cpp does not reuse stack
      spill slots in functions that call "returns_twice" functions such as
      setjmp(), otherwise this can lead to miscompiled code, because a stack
      slot would be clobbered when it's still live.
      
      This was already handled correctly for functions that call setjmp()
      (though this wasn't covered by a test), but not for functions that
      invoke setjmp().
      
      We fix this by changing callsFunctionThatReturnsTwice() to check for
      invoke instructions.
      
      This fixes PR18244.
      
      llvm-svn: 199180
      8271118a
    • Chandler Carruth's avatar
      Ok, really, for the last time, llvm-gcc is dead Jim. · af968eda
      Chandler Carruth authored
      Also, so is stacker, llvm-tv, etc. Wow.
      
      But will someone please fess up to what projects/privbracket is and why
      our autoconf build supports it?
      
      llvm-svn: 199179
      af968eda
    • Chandler Carruth's avatar
      llvm-gcc is dead. REALLY. IT'S DEAD JIM. · b4dd3c68
      Chandler Carruth authored
      llvm-svn: 199178
      b4dd3c68
    • 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
    • Duncan P. N. Exon Smith's avatar
      Remove extra } in documentation comment · f56df6e9
      Duncan P. N. Exon Smith authored
      llvm-svn: 199162
      f56df6e9
  2. Jan 13, 2014
Loading