about summary refs log tree commit diff
path: root/src/librustc/ich
AgeCommit message (Collapse)AuthorLines
2017-05-13rustc: use DefId instead of CodeExtent for FreeRegion's scope.Eduard-Mihai Burtescu-6/+1
2017-05-08incr.comp.: Hash more pieces of crate metadata to detect changes there.Michael Woerister-4/+160
2017-04-30intern CodeExtentsNiko Matsakis-13/+2
Make a `CodeExtent<'tcx>` be something allocated in an arena instead of an index into the `RegionMaps`.
2017-04-30On-demandify region mappingTaylor Cramer-1/+1
2017-04-25 support `default impl` for specializationGianni Ciccarelli-1/+1
pr review
2017-04-23rustc_const_eval: support all unit enum variants.Eduard-Mihai Burtescu-3/+6
2017-04-14Rollup merge of #40702 - mrhota:global_asm, r=nagisaCorey Farwell-0/+16
Implement global_asm!() (RFC 1548) This is a first attempt. ~~One (potential) problem I haven't solved is how to handle multiple usages of `global_asm!` in a module/crate. It looks like `LLVMSetModuleInlineAsm` overwrites module asm, and `LLVMAppendModuleInlineAsm` is not provided in LLVM C headers 😦~~ I can provide more detail as needed, but honestly, there's not a lot going on here. r? @eddyb CC @Amanieu @jackpot51 Tracking issue: #35119
2017-04-13Make simple_global_asm even simplerA.J. Gardner-0/+3
Windows builder croaked. This change tries to fix that by actually calling the global_asm-defined function so the symbol doesn't get optimized away, if that is in fact what was happening. Additionally, we provide an empty main() for non-x86 arches.
2017-04-13Auto merge of #40570 - nikomatsakis:inference-subtype-through-obligation, ↵bors-0/+4
r=arielb1 Handle subtyping in inference through obligations We currently store subtyping relations in the `TypeVariables` structure as a kind of special case. This branch uses normal obligations to propagate subtyping, thus converting our inference variables into normal fallback. It also does a few other things: - Removes the (unstable, outdated) support for custom type inference fallback. - It's not clear how we want this to work, but we know that we don't want it to work the way it currently does. - The existing support was also just getting in my way. - Fixes #30225, which was caused by the trait caching code pretending type variables were normal unification variables, when indeed they were not (but now are). There is one fishy part of these changes: when computing the LUB/GLB of a "bivariant" type parameter, I currently return the `a` value. Bivariant type parameters are only allowed in a very particular situation, where the type parameter is only used as an associated type output, like this: ```rust pub struct Foo<A, B> where A: Fn() -> B { data: A } ``` In principle, if one had `T=Foo<A, &'a u32>` and `U=Foo<A, &'b u32>` and (e.g.) `A: for<'a> Fn() -> &'a u32`, then I think that computing the LUB of `T` and `U` might do the wrong thing. Probably the right behavior is just to create a fresh type variable. However, that particular example would not compile (because the where-clause is illegal; `'a` does not appear in any input type). I was not able to make an example that *would* compile and demonstrate this shortcoming, and handling the LUB/GLB was mildly inconvenient, so I left it as is. I am considering whether to revisit this or what. I have started a crater run to test the impact of these changes.
2017-04-12First attempt at global_asm! macroA.J. Gardner-0/+13
2017-04-12Rollup merge of #41232 - arielb1:mir-rvalues, r=eddybTim Neumann-1/+2
move rvalue checking to MIR
2017-04-12ICH: Replace old, transitive metadata hashing with direct hashing approach.Michael Woerister-20/+12
Instead of collecting all potential inputs to some metadata entry and hashing those, we directly hash the values we are storing in metadata. This is more accurate and doesn't suffer from quadratic blow-up when many entries have the same dependencies.
2017-04-12ICH: Hash everything that gets encoded into crate metadata.Michael Woerister-14/+333
2017-04-11add Subtype predicateNiko Matsakis-0/+4
2017-04-11store Spans for all MIR localsAriel Ben-Yehuda-1/+2
2017-04-08Auto merge of #40887 - estebank:ty-placeholder, r=petrochenkovbors-0/+2
Introduce `TyErr` independent from `TyInfer` Add a `TyErr` type to represent unknown types in places where parse errors have happened, while still able to build the AST. Initially only used to represent incorrectly written fn arguments and avoid "expected X parameters, found Y" errors when called with the appropriate amount of parameters. We cannot use `TyInfer` for this as `_` is not allowed as a valid argument type. Example output: ```rust error: expected one of `:` or `@`, found `,` --> file.rs:12:9 | 12 | fn bar(x, y: usize) {} | ^ error[E0061]: this function takes 2 parameters but 3 parameters were supplied --> file.rs:19:9 | 12 | fn bar(x, y) {} | --------------- defined here ... 19 | bar(1, 2, 3); | ^^^^^^^ expected 2 parameters ``` Fix #34264.
2017-04-07Merge branch 'master' into ty-placeholderEsteban Küber-1/+2627
2017-04-07ICH: Centrally compute and cache DefPath hashes as part of DefPathTable.Michael Woerister-42/+2
2017-04-06Introduce HashStable trait and base ICH implementations on it.Michael Woerister-1/+2625
This initial commit provides implementations for HIR, MIR, and everything that also needs to be supported for those two.
2017-03-29Merge `ExpnId` and `SyntaxContext`.Jeffrey Seyfried-4/+0
2017-03-27Fix various useless derefs and slicingsOliver Schneider-2/+2
2017-03-22Move some constants to rustc::ich.Michael Woerister-0/+17
2017-03-22Move CachingCodemapView to rustc::ich.Michael Woerister-0/+117
2017-03-22Move DefPathHashes to rustc::ichMichael Woerister-1/+38
2017-03-22Move Fingerprint to rustc::ich::Fingerprint.Michael Woerister-0/+110