[llvm-branch-commits] [llvm-branch] r369085 - Merging r368873:
Author: hans
Date: Fri Aug 16 00:18:49 2019
New Revision: 369085
URL: http://llvm.org/viewvc/llvm-project?rev=369085&view=rev
Log:
Merging r368873:
r368873 | void | 2019-08-14 18:44:07 +0200 (Wed, 14 Aug 2019) | 15 lines
Ignore indirect branches from callbr.
Summary:
We can't speculate around indirect branches: indirectbr and invoke. The
callbr instruction needs to be included here.
Reviewers: nickdesaulniers, manojgupta, chandlerc
Reviewed By: chandlerc
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66200
Added:
llvm/branches/release_90/test/Transforms/SpeculateAroundPHIs/pr42991.ll
- copied unchanged from r368873,
llvm/trunk/test/Transforms/SpeculateAroundPHIs/pr42991.ll
Modified:
llvm/branches/release_90/ (props changed)
llvm/branches/release_90/lib/Transforms/Scalar/SpeculateAroundPHIs.cpp
Propchange: llvm/branches/release_90/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Aug 16 00:18:49 2019
@@ -1,3 +1,3 @@
/llvm/branches/Apple/Pertwee:110850,110961
/llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,366431,366481,366487,366527,366570,30,366868,366925,367030,367062,367084,367124,367215,367292,367304,367306,367314,367340-367341,367394,367396,367398,367403,367417,367662,367750,367753,367846-367847,367898,367941,368004,368230,368300,368315,368324,368477-368478,368517-368519,368554,368572
+/llvm/trunk:155241,366431,366481,366487,366527,366570,30,366868,366925,367030,367062,367084,367124,367215,367292,367304,367306,367314,367340-367341,367394,367396,367398,367403,367417,367662,367750,367753,367846-367847,367898,367941,368004,368230,368300,368315,368324,368477-368478,368517-368519,368554,368572,368873
Modified: llvm/branches/release_90/lib/Transforms/Scalar/SpeculateAroundPHIs.cpp
URL:
http://llvm.org/viewvc/llvm-project/llvm/branches/release_90/lib/Transforms/Scalar/SpeculateAroundPHIs.cpp?rev=369085&r1=369084&r2=369085&view=diff
==
--- llvm/branches/release_90/lib/Transforms/Scalar/SpeculateAroundPHIs.cpp
(original)
+++ llvm/branches/release_90/lib/Transforms/Scalar/SpeculateAroundPHIs.cpp Fri
Aug 16 00:18:49 2019
@@ -777,8 +777,10 @@ static bool tryToSpeculatePHIs(SmallVect
// speculation if the predecessor is an invoke. This doesn't seem
// fundamental and we should probably be splitting critical edges
// differently.
-if (isa(PredBB->getTerminator()) ||
-isa(PredBB->getTerminator())) {
+const auto *TermInst = PredBB->getTerminator();
+if (isa(TermInst) ||
+isa(TermInst) ||
+isa(TermInst)) {
LLVM_DEBUG(dbgs() << " Invalid: predecessor terminator: "
<< PredBB->getName() << "\n");
return false;
___
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm-branch] r369086 - Merging r367019:
Author: hans
Date: Fri Aug 16 00:44:53 2019
New Revision: 369086
URL: http://llvm.org/viewvc/llvm-project?rev=369086&view=rev
Log:
Merging r367019:
r367019 | chill | 2019-07-25 15:56:04 +0200 (Thu, 25 Jul 2019) | 10 lines
[AArch64][SVE] Allow explicit size specifier for predicate operand
... for the vector forms of `{SQ,UQ,}{INC,DEC}P` instructions. Also continue
supporting the exsting behaviour of not requiring an explicit size
specifier. The preferred disasembly is *with* the specifier.
This is implemented by redefining intruction forms to require vector predicates
with explicit size and adding aliases, which allow a predicate with no size.
Differential Revision: https://reviews.llvm.org/D65145
Modified:
llvm/branches/release_90/ (props changed)
llvm/branches/release_90/lib/Target/AArch64/SVEInstrFormats.td
llvm/branches/release_90/test/MC/AArch64/SVE/decp.s
llvm/branches/release_90/test/MC/AArch64/SVE/incp.s
llvm/branches/release_90/test/MC/AArch64/SVE/sqdecp.s
llvm/branches/release_90/test/MC/AArch64/SVE/sqincp.s
llvm/branches/release_90/test/MC/AArch64/SVE/uqdecp.s
llvm/branches/release_90/test/MC/AArch64/SVE/uqincp.s
Propchange: llvm/branches/release_90/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Aug 16 00:44:53 2019
@@ -1,3 +1,3 @@
/llvm/branches/Apple/Pertwee:110850,110961
/llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,366431,366481,366487,366527,366570,30,366868,366925,367030,367062,367084,367124,367215,367292,367304,367306,367314,367340-367341,367394,367396,367398,367403,367417,367662,367750,367753,367846-367847,367898,367941,368004,368230,368300,368315,368324,368477-368478,368517-368519,368554,368572,368873
+/llvm/trunk:155241,366431,366481,366487,366527,366570,30,366868,366925,367019,367030,367062,367084,367124,367215,367292,367304,367306,367314,367340-367341,367394,367396,367398,367403,367417,367662,367750,367753,367846-367847,367898,367941,368004,368230,368300,368315,368324,368477-368478,368517-368519,368554,368572,368873
Modified: llvm/branches/release_90/lib/Target/AArch64/SVEInstrFormats.td
URL:
http://llvm.org/viewvc/llvm-project/llvm/branches/release_90/lib/Target/AArch64/SVEInstrFormats.td?rev=369086&r1=369085&r2=369086&view=diff
==
--- llvm/branches/release_90/lib/Target/AArch64/SVEInstrFormats.td (original)
+++ llvm/branches/release_90/lib/Target/AArch64/SVEInstrFormats.td Fri Aug 16
00:44:53 2019
@@ -403,12 +403,12 @@ multiclass sve_int_count_r_x64 o
}
class sve_int_count_v sz8_64, bits<5> opc, string asm,
- ZPRRegOp zprty>
-: I<(outs zprty:$Zdn), (ins zprty:$_Zdn, PPRAny:$Pg),
- asm, "\t$Zdn, $Pg",
+ ZPRRegOp zprty, PPRRegOp pprty>
+: I<(outs zprty:$Zdn), (ins zprty:$_Zdn, pprty:$Pm),
+ asm, "\t$Zdn, $Pm",
"",
[]>, Sched<[]> {
- bits<4> Pg;
+ bits<4> Pm;
bits<5> Zdn;
let Inst{31-24} = 0b00100101;
let Inst{23-22} = sz8_64;
@@ -416,7 +416,7 @@ class sve_int_count_v sz8_64, bi
let Inst{18-16} = opc{4-2};
let Inst{15-11} = 0b1;
let Inst{10-9} = opc{1-0};
- let Inst{8-5} = Pg;
+ let Inst{8-5} = Pm;
let Inst{4-0} = Zdn;
let Constraints = "$Zdn = $_Zdn";
@@ -425,9 +425,16 @@ class sve_int_count_v sz8_64, bi
}
multiclass sve_int_count_v opc, string asm> {
- def _H : sve_int_count_v<0b01, opc, asm, ZPR16>;
- def _S : sve_int_count_v<0b10, opc, asm, ZPR32>;
- def _D : sve_int_count_v<0b11, opc, asm, ZPR64>;
+ def _H : sve_int_count_v<0b01, opc, asm, ZPR16, PPR16>;
+ def _S : sve_int_count_v<0b10, opc, asm, ZPR32, PPR32>;
+ def _D : sve_int_count_v<0b11, opc, asm, ZPR64, PPR64>;
+
+ def : InstAlias(NAME # "_H") ZPR16:$Zdn, PPRAny:$Pm), 0>;
+ def : InstAlias(NAME # "_S") ZPR32:$Zdn, PPRAny:$Pm), 0>;
+ def : InstAlias(NAME # "_D") ZPR64:$Zdn, PPRAny:$Pm), 0>;
}
class sve_int_pcount_pred sz8_64, bits<4> opc, string asm,
Modified: llvm/branches/release_90/test/MC/AArch64/SVE/decp.s
URL:
http://llvm.org/viewvc/llvm-project/llvm/branches/release_90/test/MC/AArch64/SVE/decp.s?rev=369086&r1=369085&r2=369086&view=diff
==
--- llvm/branches/release_90/test/MC/AArch64/SVE/decp.s (original)
+++ llvm/branches/release_90/test/MC/AArch64/SVE/decp.s Fri Aug 16 00:44:53 2019
@@ -56,19 +56,37 @@ decpxzr, p15.d
// CHECK-UNKNOWN: ff 89 ed 25
decpz31.h, p15
-// CHECK-INST: decpz31.h, p15
+// CHECK-INST: decpz31.h, p15.h
+// CHECK-ENCODING: [0xff,0x81,0x6d,0x25]
+// CHECK-ERROR: instruction requires: sve
+// CHECK-UNKNOWN: ff 81 6d 25
+
+decpz31.h, p15.h
+// CHECK-INST: decpz31.h, p15.h
// CHECK-ENCODING: [0xff,0x81,0x6d,
[llvm-branch-commits] [cfe-branch] r369087 - Merging r368940:
Author: hans
Date: Fri Aug 16 01:11:28 2019
New Revision: 369087
URL: http://llvm.org/viewvc/llvm-project?rev=369087&view=rev
Log:
Merging r368940:
r368940 | rsmith | 2019-08-15 00:57:50 +0200 (Thu, 15 Aug 2019) | 19 lines
Fix handling of class member access into a vector type.
When handling a member access into a non-class, non-ObjC-object type, we
would perform a lookup into the surrounding scope as if for an
unqualified lookup. If the member access was followed by a '<' and this
lookup (or the typo-correction for it) found a template name, we'd treat
the member access as naming that template.
Now we treat such accesses as never naming a template if the type of the
object expression is of vector type, so that vector component accesses
are never misinterpreted as naming something else. This is not entirely
correct, since it is in fact valid to name a template from the enclosing
scope in this context, when invoking a pseudo-destructor for the vector
type via an alias template, but that's very much a corner case, and this
change leaves that case only as broken as the corresponding case for
Objective-C types is.
This incidentally adds support for dr2292, which permits a 'template'
keyword at the start of a member access naming a pseudo-destructor.
Modified:
cfe/branches/release_90/ (props changed)
cfe/branches/release_90/lib/Sema/SemaExprCXX.cpp
cfe/branches/release_90/lib/Sema/SemaTemplate.cpp
cfe/branches/release_90/test/CXX/drs/dr22xx.cpp
cfe/branches/release_90/test/CXX/drs/dr4xx.cpp
cfe/branches/release_90/test/SemaCXX/cxx2a-adl-only-template-id.cpp
cfe/branches/release_90/test/SemaCXX/pseudo-destructors.cpp
cfe/branches/release_90/test/SemaCXX/vector.cpp
Propchange: cfe/branches/release_90/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Aug 16 01:11:28 2019
@@ -1,4 +1,4 @@
/cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:366429,366448,366457,366474,366480,366483,366511,366670,366694,366699,366878,367008,367039,367055,367103,367134,367301,367305,367323,367387,367403,367520,367530,367661,367675,367802,367823,367906,368104,368202,368552,368561,368874
+/cfe/trunk:366429,366448,366457,366474,366480,366483,366511,366670,366694,366699,366878,367008,367039,367055,367103,367134,367301,367305,367323,367387,367403,367520,367530,367661,367675,367802,367823,367906,368104,368202,368552,368561,368874,368940
/cfe/trunk/test:170344
/cfe/trunk/test/SemaTemplate:126920
Modified: cfe/branches/release_90/lib/Sema/SemaExprCXX.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/branches/release_90/lib/Sema/SemaExprCXX.cpp?rev=369087&r1=369086&r2=369087&view=diff
==
--- cfe/branches/release_90/lib/Sema/SemaExprCXX.cpp (original)
+++ cfe/branches/release_90/lib/Sema/SemaExprCXX.cpp Fri Aug 16 01:11:28 2019
@@ -6794,14 +6794,10 @@ ExprResult Sema::ActOnStartCXXMemberRefe
// it's legal for the type to be incomplete if this is a pseudo-destructor
// call. We'll do more incomplete-type checks later in the lookup process,
// so just skip this check for ObjC types.
- if (BaseType->isObjCObjectOrInterfaceType()) {
+ if (!BaseType->isRecordType()) {
ObjectType = ParsedType::make(BaseType);
MayBePseudoDestructor = true;
return Base;
- } else if (!BaseType->isRecordType()) {
-ObjectType = nullptr;
-MayBePseudoDestructor = true;
-return Base;
}
// The object type must be complete (or dependent), or
Modified: cfe/branches/release_90/lib/Sema/SemaTemplate.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/branches/release_90/lib/Sema/SemaTemplate.cpp?rev=369087&r1=369086&r2=369087&view=diff
==
--- cfe/branches/release_90/lib/Sema/SemaTemplate.cpp (original)
+++ cfe/branches/release_90/lib/Sema/SemaTemplate.cpp Fri Aug 16 01:11:28 2019
@@ -362,13 +362,27 @@ bool Sema::LookupTemplateName(LookupResu
// x->B::f, and we are looking into the type of the object.
assert(!SS.isSet() && "ObjectType and scope specifier cannot coexist");
LookupCtx = computeDeclContext(ObjectType);
-IsDependent = !LookupCtx;
+IsDependent = !LookupCtx && ObjectType->isDependentType();
assert((IsDependent || !ObjectType->isIncompleteType() ||
ObjectType->castAs()->isBeingDefined()) &&
"Caller should have completed object type");
-// Template names cannot appear inside an Objective-C class or object type.
-if (ObjectType->isObjCObjectOrInterfaceType()) {
+// Template names cannot appear inside an Objective-C class or object type
+// or a vector type.
+//
+// FIXME: This is wrong. For example:
+//
+// template u
