Skip to content
  1. Jul 09, 2019
    • Stanislav Mekhanoshin's avatar
      [AMDGPU] gfx908 clang target · 0cfd75a0
      Stanislav Mekhanoshin authored
      Differential Revision: https://reviews.llvm.org/D64430
      
      llvm-svn: 365528
      0cfd75a0
    • Erik Pilkington's avatar
    • Hiroshi Yamauchi's avatar
      Revert Revert Devirtualize destructor of final class. · d088720e
      Hiroshi Yamauchi authored
      Revert r364359 and recommit r364100.
      
      r364100 was reverted as r364359 due to an internal test failure, but it was a
      false alarm.
      
      llvm-svn: 365509
      d088720e
    • Marco Antognini's avatar
      [OpenCL][Sema] Improve address space support for blocks · d36e130a
      Marco Antognini authored
      Summary:
      This patch ensures that the following code is compiled identically with
      -cl-std=CL2.0 and -fblocks -cl-std=c++.
      
          kernel void test(void) {
            void (^const block_A)(void) = ^{
              return;
            };
          }
      
      A new test is not added because cl20-device-side-enqueue.cl will cover
      this once blocks are further improved for C++ for OpenCL.
      
      The changes to Sema::PerformImplicitConversion are based on
      the parts of Sema::CheckAssignmentConstraints on block pointer
      conversions.
      
      Reviewers: rjmccall, Anastasia
      
      Subscribers: yaxunl, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D64083
      
      llvm-svn: 365500
      d36e130a
    • Marco Antognini's avatar
      [OpenCL][Sema] Fix builtin rewriting · b00d5f73
      Marco Antognini authored
      This patch ensures built-in functions are rewritten using the proper
      parent declaration.
      
      Existing tests are modified to run in C++ mode to ensure the
      functionality works also with C++ for OpenCL while not increasing the
      testing runtime.
      
      llvm-svn: 365499
      b00d5f73
    • Aaron Ballman's avatar
      Ignore trailing NullStmts in StmtExprs for GCC compatibility. · b1e511bf
      Aaron Ballman authored
      Ignore trailing NullStmts in compound expressions when determining the result type and value. This is to match the GCC behavior which ignores semicolons at the end of compound expressions.
      
      Patch by Dominic Ferreira.
      
      llvm-svn: 365498
      b1e511bf
    • Emilio Cobos Alvarez's avatar
      [libclang] Fix hang in release / assertion in debug when evaluating value-dependent types. · 74375450
      Emilio Cobos Alvarez authored
      Expression evaluator doesn't work in value-dependent types, so ensure that the
      precondition it asserts holds.
      
      This fixes https://bugs.llvm.org/show_bug.cgi?id=42532
      
      Differential Revision: https://reviews.llvm.org/D64409
      
      llvm-svn: 365490
      74375450
    • Alexey Bataev's avatar
      [OPENMP]Fix the float point semantics handling on the device. · e509af3c
      Alexey Bataev authored
      The device should use the same float point representation as the host.
      Previous patch fixed the handling of the sizes of the float point types,
      but did not fixed the fp semantics. This patch makes target device to
      use the host fp semantics. this is required for the correct data
      transfer between host and device and correct codegen.
      
      llvm-svn: 365485
      e509af3c
    • Fangrui Song's avatar
      [ItaniumMangle] Refactor long double/__float128 mangling and fix the mangled code · 04615341
      Fangrui Song authored
      In gcc PowerPC, long double has 3 mangling schemes:
      
      -mlong-double-64: `e`
      -mlong-double-128 -mabi=ibmlongdouble: `g`
      -mlong-double-128 -mabi=ieeelongdouble: `u9__ieee128` (gcc <= 8.1: `U10__float128`)
      
      The current useFloat128ManglingForLongDouble() bisection is not suitable
      when we support -mlong-double-128 in clang (D64277). Replace
      useFloat128ManglingForLongDouble() with getLongDoubleMangling() and
      getFloat128Mangling() to allow 3 mangling schemes.
      
      I also deleted the `getTriple().isOSBinFormatELF()` check (the Darwin
      support has gone: https://reviews.llvm.org/D50988).
      
      For x86, change the mangled code of __float128 from `U10__float128` to `g`. `U10__float128` was wrongly copied from PowerPC.
      The test will be added to `test/CodeGen/x86-long-double.cpp` in D64277.
      
      Reviewed By: erichkeane
      
      Differential Revision: https://reviews.llvm.org/D64276
      
      llvm-svn: 365480
      04615341
    • Ilya Biryukov's avatar
      [Syntax] Move roles into a separate enum · 51dad419
      Ilya Biryukov authored
      To align with reviewer's suggestions.
      
      llvm-svn: 365479
      51dad419
    • Pengfei Wang's avatar
      [NFC] [X86] Fix scan-build complaining · a50bbfc4
      Pengfei Wang authored
      Summary:
      Remove unused variable. This fixes bug:
      https://bugs.llvm.org/show_bug.cgi?id=42526
      
      
      
      Signed-off-by: default avatarpengfei <pengfei.wang@intel.com>
      
      Reviewers: RKSimon, xiangzhangllvm, craig.topper
      
      Subscribers: cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D64389
      
      llvm-svn: 365473
      a50bbfc4
    • Ilya Biryukov's avatar
      Reland r365355: [Syntax] Introduce syntax trees · 9b3f38f9
      Ilya Biryukov authored
      With a fix to a PS4 buildbot crash.
      
      llvm-svn: 365466
      9b3f38f9
    • Simon Pilgrim's avatar
      Revert rL365355 : [Syntax] Introduce syntax trees · 7e3b2275
      Simon Pilgrim authored
      Summary:
      A tooling-focused alternative to the AST. This commit focuses on the
      memory-management strategy and the structure of the AST.
      
      More to follow later:
        - Operations to mutate the syntax trees and corresponding textual
          replacements.
        - Mapping between clang AST nodes and syntax tree nodes.
        - More node types corresponding to the language constructs.
      
      Reviewers: sammccall
      
      Reviewed By: sammccall
      
      Subscribers: llvm-commits, mgorny, cfe-commits
      
      Tags: #clang, #llvm
      
      Differential Revision: https://reviews.llvm.org/D61637
      ........
      Fixes buildbots which were crashing on SyntaxTests.exe
      
      llvm-svn: 365465
      7e3b2275
    • Balazs Keri's avatar
      [ASTImporter] Added visibility context check for EnumDecl. · eb79b25b
      Balazs Keri authored
      Summary:
      ASTImporter makes now difference between enums with same name in different translation
      units if these are not visible outside.
      ("Scoped enums" are not handled yet.)
      
      Reviewers: martong, a.sidorin, shafik, a_sidorin
      
      Reviewed By: a_sidorin
      
      Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D62484
      
      llvm-svn: 365464
      eb79b25b
    • Simon Pilgrim's avatar
      Retire VS2015 Support · 6f6e5d85
      Simon Pilgrim authored
      As proposed here: https://lists.llvm.org/pipermail/llvm-dev/2019-June/133147.html
      
      This patch raises the minimum supported version to build LLVM/Clang to Visual Studio 2017.
      
      Differential Revision: https://reviews.llvm.org/D64326
      
      llvm-svn: 365454
      6f6e5d85
    • Sylvestre Ledru's avatar
      Remove trailing whitespaces in the Language Extensions doc · 0adbe775
      Sylvestre Ledru authored
      llvm-svn: 365446
      0adbe775
    • Sylvestre Ledru's avatar
      Add AlignConsecutiveMacros to the clang release notes · b2a549d7
      Sylvestre Ledru authored
      llvm-svn: 365445
      b2a549d7
    • Yonghong Song's avatar
      [BPF] Preserve debuginfo array/union/struct type/access index · 048493f8
      Yonghong Song authored
      For background of BPF CO-RE project, please refer to
        http://vger.kernel.org/bpfconf2019.html
      
      
      In summary, BPF CO-RE intends to compile bpf programs
      adjustable on struct/union layout change so the same
      program can run on multiple kernels with adjustment
      before loading based on native kernel structures.
      
      In order to do this, we need keep track of GEP(getelementptr)
      instruction base and result debuginfo types, so we
      can adjust on the host based on kernel BTF info.
      Capturing such information as an IR optimization is hard
      as various optimization may have tweaked GEP and also
      union is replaced by structure it is impossible to track
      fieldindex for union member accesses.
      
      Three intrinsic functions, preserve_{array,union,struct}_access_index,
      are introducted.
        addr = preserve_array_access_index(base, index, dimension)
        addr = preserve_union_access_index(base, di_index)
        addr = preserve_struct_access_index(base, gep_index, di_index)
      here,
        base: the base pointer for the array/union/struct access.
        index: the last access index for array, the same for IR/DebugInfo layout.
        dimension: the array dimension.
        gep_index: the access index based on IR layout.
        di_index: the access index based on user/debuginfo types.
      
      If using these intrinsics blindly, i.e., transforming all GEPs
      to these intrinsics and later on reducing them to GEPs, we have
      seen up to 7% more instructions generated. To avoid such an overhead,
      a clang builtin is proposed:
        base = __builtin_preserve_access_index(base)
      such that user wraps to-be-relocated GEPs in this builtin
      and preserve_*_access_index intrinsics only apply to
      those GEPs. Such a buyin will prevent performance degradation
      if people do not use CO-RE, even for programs which use
      bpf_probe_read().
      
      For example, for the following example,
        $ cat test.c
        struct sk_buff {
           int i;
           int b1:1;
           int b2:2;
           union {
             struct {
               int o1;
               int o2;
             } o;
             struct {
               char flags;
               char dev_id;
             } dev;
             int netid;
           } u[10];
        };
      
        static int (*bpf_probe_read)(void *dst, int size, const void *unsafe_ptr)
            = (void *) 4;
      
        #define _(x) (__builtin_preserve_access_index(x))
      
        int bpf_prog(struct sk_buff *ctx) {
          char dev_id;
          bpf_probe_read(&dev_id, sizeof(char), _(&ctx->u[5].dev.dev_id));
          return dev_id;
        }
        $ clang -target bpf -O2 -g -emit-llvm -S -mllvm -print-before-all \
          test.c >& log
      
      The generated IR looks like below:
        ...
        define dso_local i32 @bpf_prog(%struct.sk_buff*) #0 !dbg !15 {
          %2 = alloca %struct.sk_buff*, align 8
          %3 = alloca i8, align 1
          store %struct.sk_buff* %0, %struct.sk_buff** %2, align 8, !tbaa !45
          call void @llvm.dbg.declare(metadata %struct.sk_buff** %2, metadata !43, metadata !DIExpression()), !dbg !49
          call void @llvm.lifetime.start.p0i8(i64 1, i8* %3) #4, !dbg !50
          call void @llvm.dbg.declare(metadata i8* %3, metadata !44, metadata !DIExpression()), !dbg !51
          %4 = load i32 (i8*, i32, i8*)*, i32 (i8*, i32, i8*)** @bpf_probe_read, align 8, !dbg !52, !tbaa !45
          %5 = load %struct.sk_buff*, %struct.sk_buff** %2, align 8, !dbg !53, !tbaa !45
          %6 = call [10 x %union.anon]* @llvm.preserve.struct.access.index.p0a10s_union.anons.p0s_struct.sk_buffs(
               %struct.sk_buff* %5, i32 2, i32 3), !dbg !53, !llvm.preserve.access.index !19
          %7 = call %union.anon* @llvm.preserve.array.access.index.p0s_union.anons.p0a10s_union.anons(
               [10 x %union.anon]* %6, i32 1, i32 5), !dbg !53
          %8 = call %union.anon* @llvm.preserve.union.access.index.p0s_union.anons.p0s_union.anons(
               %union.anon* %7, i32 1), !dbg !53, !llvm.preserve.access.index !26
          %9 = bitcast %union.anon* %8 to %struct.anon.0*, !dbg !53
          %10 = call i8* @llvm.preserve.struct.access.index.p0i8.p0s_struct.anon.0s(
               %struct.anon.0* %9, i32 1, i32 1), !dbg !53, !llvm.preserve.access.index !34
          %11 = call i32 %4(i8* %3, i32 1, i8* %10), !dbg !52
          %12 = load i8, i8* %3, align 1, !dbg !54, !tbaa !55
          %13 = sext i8 %12 to i32, !dbg !54
          call void @llvm.lifetime.end.p0i8(i64 1, i8* %3) #4, !dbg !56
          ret i32 %13, !dbg !57
        }
      
        !19 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "sk_buff", file: !3, line: 1, size: 704, elements: !20)
        !26 = distinct !DICompositeType(tag: DW_TAG_union_type, scope: !19, file: !3, line: 5, size: 64, elements: !27)
        !34 = distinct !DICompositeType(tag: DW_TAG_structure_type, scope: !26, file: !3, line: 10, size: 16, elements: !35)
      
      Note that @llvm.preserve.{struct,union}.access.index calls have metadata llvm.preserve.access.index
      attached to instructions to provide struct/union debuginfo type information.
      
      For &ctx->u[5].dev.dev_id,
        . The "%6 = ..." represents struct member "u" with index 2 for IR layout and index 3 for DI layout.
        . The "%7 = ..." represents array subscript "5".
        . The "%8 = ..." represents union member "dev" with index 1 for DI layout.
        . The "%10 = ..." represents struct member "dev_id" with index 1 for both IR and DI layout.
      
      Basically, traversing the use-def chain recursively for the 3rd argument of bpf_probe_read() and
      examining all preserve_*_access_index calls, the debuginfo struct/union/array access index
      can be achieved.
      
      The intrinsics also contain enough information to regenerate codes for IR layout.
      For array and structure intrinsics, the proper GEP can be constructed.
      For union intrinsics, replacing all uses of "addr" with "base" should be enough.
      
      Signed-off-by: default avatarYonghong Song <yhs@fb.com>
      
      Differential Revision: https://reviews.llvm.org/D61809
      
      llvm-svn: 365438
      048493f8
    • Yonghong Song's avatar
      Revert "[BPF] Preserve debuginfo array/union/struct type/access index" · e085b40e
      Yonghong Song authored
      This reverts commit r365435.
      
      Forgot adding the Differential Revision link. Will add to the
      commit message and resubmit.
      
      llvm-svn: 365436
      e085b40e
    • Yonghong Song's avatar
      [BPF] Preserve debuginfo array/union/struct type/access index · f21eeafc
      Yonghong Song authored
      For background of BPF CO-RE project, please refer to
        http://vger.kernel.org/bpfconf2019.html
      
      
      In summary, BPF CO-RE intends to compile bpf programs
      adjustable on struct/union layout change so the same
      program can run on multiple kernels with adjustment
      before loading based on native kernel structures.
      
      In order to do this, we need keep track of GEP(getelementptr)
      instruction base and result debuginfo types, so we
      can adjust on the host based on kernel BTF info.
      Capturing such information as an IR optimization is hard
      as various optimization may have tweaked GEP and also
      union is replaced by structure it is impossible to track
      fieldindex for union member accesses.
      
      Three intrinsic functions, preserve_{array,union,struct}_access_index,
      are introducted.
        addr = preserve_array_access_index(base, index, dimension)
        addr = preserve_union_access_index(base, di_index)
        addr = preserve_struct_access_index(base, gep_index, di_index)
      here,
        base: the base pointer for the array/union/struct access.
        index: the last access index for array, the same for IR/DebugInfo layout.
        dimension: the array dimension.
        gep_index: the access index based on IR layout.
        di_index: the access index based on user/debuginfo types.
      
      If using these intrinsics blindly, i.e., transforming all GEPs
      to these intrinsics and later on reducing them to GEPs, we have
      seen up to 7% more instructions generated. To avoid such an overhead,
      a clang builtin is proposed:
        base = __builtin_preserve_access_index(base)
      such that user wraps to-be-relocated GEPs in this builtin
      and preserve_*_access_index intrinsics only apply to
      those GEPs. Such a buyin will prevent performance degradation
      if people do not use CO-RE, even for programs which use
      bpf_probe_read().
      
      For example, for the following example,
        $ cat test.c
        struct sk_buff {
           int i;
           int b1:1;
           int b2:2;
           union {
             struct {
               int o1;
               int o2;
             } o;
             struct {
               char flags;
               char dev_id;
             } dev;
             int netid;
           } u[10];
        };
      
        static int (*bpf_probe_read)(void *dst, int size, const void *unsafe_ptr)
            = (void *) 4;
      
        #define _(x) (__builtin_preserve_access_index(x))
      
        int bpf_prog(struct sk_buff *ctx) {
          char dev_id;
          bpf_probe_read(&dev_id, sizeof(char), _(&ctx->u[5].dev.dev_id));
          return dev_id;
        }
        $ clang -target bpf -O2 -g -emit-llvm -S -mllvm -print-before-all \
          test.c >& log
      
      The generated IR looks like below:
        ...
        define dso_local i32 @bpf_prog(%struct.sk_buff*) #0 !dbg !15 {
          %2 = alloca %struct.sk_buff*, align 8
          %3 = alloca i8, align 1
          store %struct.sk_buff* %0, %struct.sk_buff** %2, align 8, !tbaa !45
          call void @llvm.dbg.declare(metadata %struct.sk_buff** %2, metadata !43, metadata !DIExpression()), !dbg !49
          call void @llvm.lifetime.start.p0i8(i64 1, i8* %3) #4, !dbg !50
          call void @llvm.dbg.declare(metadata i8* %3, metadata !44, metadata !DIExpression()), !dbg !51
          %4 = load i32 (i8*, i32, i8*)*, i32 (i8*, i32, i8*)** @bpf_probe_read, align 8, !dbg !52, !tbaa !45
          %5 = load %struct.sk_buff*, %struct.sk_buff** %2, align 8, !dbg !53, !tbaa !45
          %6 = call [10 x %union.anon]* @llvm.preserve.struct.access.index.p0a10s_union.anons.p0s_struct.sk_buffs(
               %struct.sk_buff* %5, i32 2, i32 3), !dbg !53, !llvm.preserve.access.index !19
          %7 = call %union.anon* @llvm.preserve.array.access.index.p0s_union.anons.p0a10s_union.anons(
               [10 x %union.anon]* %6, i32 1, i32 5), !dbg !53
          %8 = call %union.anon* @llvm.preserve.union.access.index.p0s_union.anons.p0s_union.anons(
               %union.anon* %7, i32 1), !dbg !53, !llvm.preserve.access.index !26
          %9 = bitcast %union.anon* %8 to %struct.anon.0*, !dbg !53
          %10 = call i8* @llvm.preserve.struct.access.index.p0i8.p0s_struct.anon.0s(
               %struct.anon.0* %9, i32 1, i32 1), !dbg !53, !llvm.preserve.access.index !34
          %11 = call i32 %4(i8* %3, i32 1, i8* %10), !dbg !52
          %12 = load i8, i8* %3, align 1, !dbg !54, !tbaa !55
          %13 = sext i8 %12 to i32, !dbg !54
          call void @llvm.lifetime.end.p0i8(i64 1, i8* %3) #4, !dbg !56
          ret i32 %13, !dbg !57
        }
      
        !19 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "sk_buff", file: !3, line: 1, size: 704, elements: !20)
        !26 = distinct !DICompositeType(tag: DW_TAG_union_type, scope: !19, file: !3, line: 5, size: 64, elements: !27)
        !34 = distinct !DICompositeType(tag: DW_TAG_structure_type, scope: !26, file: !3, line: 10, size: 16, elements: !35)
      
      Note that @llvm.preserve.{struct,union}.access.index calls have metadata llvm.preserve.access.index
      attached to instructions to provide struct/union debuginfo type information.
      
      For &ctx->u[5].dev.dev_id,
        . The "%6 = ..." represents struct member "u" with index 2 for IR layout and index 3 for DI layout.
        . The "%7 = ..." represents array subscript "5".
        . The "%8 = ..." represents union member "dev" with index 1 for DI layout.
        . The "%10 = ..." represents struct member "dev_id" with index 1 for both IR and DI layout.
      
      Basically, traversing the use-def chain recursively for the 3rd argument of bpf_probe_read() and
      examining all preserve_*_access_index calls, the debuginfo struct/union/array access index
      can be achieved.
      
      The intrinsics also contain enough information to regenerate codes for IR layout.
      For array and structure intrinsics, the proper GEP can be constructed.
      For union intrinsics, replacing all uses of "addr" with "base" should be enough.
      
      Signed-off-by: default avatarYonghong Song <yhs@fb.com>
      llvm-svn: 365435
      f21eeafc
    • Nico Weber's avatar
      Use `ln -n` to prevent forming a symlink cycle, instead of rm'ing the source · 9d2538d2
      Nico Weber authored
      This is a better fix for the problem fixed in r334972.
      
      Also remove the rm'ing of the symlink destination that was there to
      clean up the bots -- it's over a year later, bots should be happy now.
      
      Differential Revision: https://reviews.llvm.org/D64301
      
      llvm-svn: 365414
      9d2538d2
    • Nico Weber's avatar
      Let unaliased Args track which Alias they were created from, and use that in... · e3f06b47
      Nico Weber authored
      Let unaliased Args track which Alias they were created from, and use that in Arg::getAsString() for diagnostics
      
      With this, `clang-cl /source-charset:utf-16 test.cc` now prints `invalid
      value 'utf-16' in '/source-charset:utf-16'` instead of `invalid value
      'utf-16' in '-finput-charset=utf-16'` before, and several other clang-cl
      flags produce much less confusing output as well.
      
      Fixes PR29106.
      
      Since an arg and its alias can have different arg types (joined vs not)
      and different values (because of AliasArgs<>), I chose to give the Alias
      its own Arg object. For convenience, I just store the alias directly in
      the unaliased arg – there aren't many arg objects at runtime, so that
      seems ok.
      
      Finally, I changed Arg::getAsString() to use the alias's representation
      if it's present – that function was already documented as being the
      suitable function for diagnostics, and most callers already used it for
      diagnostics.
      
      Implementation-wise, Arg::accept() previously used to parse things as
      the unaliased option. The core of that switch is now extracted into a
      new function acceptInternal() which parses as the _aliased_ option, and
      the previously-intermingled unaliasing is now done as an explicit step
      afterwards.
      
      (This also changes one place in lld that didn't use getAsString() for
      diagnostics, so that that one place now also prints the flag as the user
      wrote it, not as it looks after it went through unaliasing.)
      
      Differential Revision: https://reviews.llvm.org/D64253
      
      llvm-svn: 365413
      e3f06b47
    • Fangrui Song's avatar
      [X86][PPC] Support -mlong-double-64 · 11cb39c5
      Fangrui Song authored
      -mlong-double-64 is supported on some ports of gcc (i386, x86_64, and ppc{32,64}).
      On many other targets, there will be an error:
      
          error: unrecognized command line option '-mlong-double-64'
      
      This patch makes the driver option -mlong-double-64 available for x86
      and ppc. The CC1 option -mlong-double-64 is available on all targets for
      users to test on unsupported targets.
      
      LongDoubleSize is added as a VALUE_LANGOPT so that the option can be
      shared with -mlong-double-128 when we support it in clang.
      
      Also, make powerpc*-linux-musl default to use 64-bit long double. It is
      currently the only supported ABI on musl and is also how people
      configure powerpc*-linux-musl-gcc.
      
      Reviewed By: rnk
      
      Differential Revision: https://reviews.llvm.org/D64067
      
      llvm-svn: 365412
      11cb39c5
    • Nico Weber's avatar
      clang-cl: Port cl.exe's C4659 to clang-cl · 98016216
      Nico Weber authored
      Differential Revision: https://reviews.llvm.org/D64349
      
      llvm-svn: 365411
      98016216
    • Artem Dergachev's avatar
      [analyzer] exploded-graph-rewriter: Implement a topology-only mode. · c6b5c5b9
      Artem Dergachev authored
      In this mode the rewriter will only rewrite program points
      and omit program states. Useful for understanding
      the rough topology of the graph.
      
      Differential Revision: https://reviews.llvm.org/D64264
      
      llvm-svn: 365410
      c6b5c5b9
    • Artem Dergachev's avatar
      [analyzer] exploded-graph-rewriter: Implement a single-path mode. · 78566e45
      Artem Dergachev authored
      Instead of rewriting the whole graph, rewrite the leftmost path in the
      graph. Useful for trimmed graphs that are still too large to display due
      to multiple equivalent reports mixed into them.
      
      Differential Revision: https://reviews.llvm.org/D64263
      
      llvm-svn: 365409
      78566e45
    • Erik Pilkington's avatar
      [ObjC] Add a -Wtautological-compare warning for BOOL · fa591c37
      Erik Pilkington authored
      On macOS, BOOL is a typedef for signed char, but it should never hold a value
      that isn't 1 or 0. Any code that expects a different value in their BOOL should
      be fixed.
      
      rdar://51954400
      
      Differential revision: https://reviews.llvm.org/D63856
      
      llvm-svn: 365408
      fa591c37
    • David Blaikie's avatar
      [cxx2a] P0624R2 fix: only lambdas with no lambda-capture are default-constructible and assignable. · 793231c3
      David Blaikie authored
      This is a fix for rG864949 which only disabled default construction and
      assignment for lambdas with capture-defaults, where the C++2a draft
      disables them for lambdas with any lambda-capture at all.
      
      Patch by Logan Smith!
      
      Differential Revision: https://reviews.llvm.org/D64058
      
      llvm-svn: 365406
      793231c3
    • Francis Visoiu Mistrih's avatar
      [Frontend] Explicitly include Bitstream/BitCodes.h and BitstreamWriter.h · 315ce839
      Francis Visoiu Mistrih authored
      This fixes a modules issue:
      
      error: declaration of 'bitc' must be imported from module
      'Clang_Serialization.ASTBitCodes' before it is required
      Stream.EmitRecord(llvm::bitc::BLOCKINFO_CODE_SETBID, Record);
      
      llvm-svn: 365405
      315ce839
    • Paul Robinson's avatar
      Fix line endings. NFC · 62cbe8ce
      Paul Robinson authored
      llvm-svn: 365402
      62cbe8ce
    • Rainer Orth's avatar
      [Sanitizers] Don't use clang_rt.sancov_{begin,end} on Solaris · 025e44f2
      Rainer Orth authored
      As explained in https://reviews.llvm.org/D63601, there's no point using clang_rt.sancov_{begin,end}
      on Solaris any longer.
      
      This companion patch to the above removes their use from the driver.
      
      Tested on amd64-pc-solaris2.11
      
      Differential Revision: https://reviews.llvm.org/D63602
      
      llvm-svn: 365396
      025e44f2
    • Bill Wendling's avatar
      Add parentheses to silence warnings. · b9816f67
      Bill Wendling authored
      llvm-svn: 365395
      b9816f67
  2. Jul 08, 2019
Loading